aboutsummaryrefslogtreecommitdiffstats
path: root/include/spl/sys
diff options
context:
space:
mode:
Diffstat (limited to 'include/spl/sys')
-rw-r--r--include/spl/sys/timer.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/include/spl/sys/timer.h b/include/spl/sys/timer.h
index a6b134570..31d89d3b9 100644
--- a/include/spl/sys/timer.h
+++ b/include/spl/sys/timer.h
@@ -72,4 +72,29 @@ usleep_range(unsigned long min, unsigned long max)
#define USEC_TO_TICK(us) usecs_to_jiffies(us)
#define NSEC_TO_TICK(ns) usecs_to_jiffies(ns / NSEC_PER_USEC)
+#ifndef from_timer
+#define from_timer(var, timer, timer_field) \
+ container_of(timer, typeof(*var), timer_field)
+#endif
+
+#ifdef HAVE_KERNEL_TIMER_FUNCTION_TIMER_LIST
+typedef struct timer_list *spl_timer_list_t;
+#else
+typedef unsigned long spl_timer_list_t;
+#endif
+
+#ifndef HAVE_KERNEL_TIMER_SETUP
+
+static inline void
+timer_setup(struct timer_list *timer, void (*func)(spl_timer_list_t), u32 fl)
+{
+#ifdef HAVE_KERNEL_TIMER_LIST_FLAGS
+ (timer)->flags = fl;
+#endif
+ init_timer(timer);
+ setup_timer(timer, func, (spl_timer_list_t)(timer));
+}
+
+#endif /* HAVE_KERNEL_TIMER_SETUP */
+
#endif /* _SPL_TIMER_H */