|
@@ -168,6 +168,20 @@ static inline void init_timer_on_stack_key(struct timer_list *timer,
|
|
|
#define setup_pinned_deferrable_timer_on_stack(timer, fn, data) \
|
|
|
__setup_timer_on_stack((timer), (fn), (data), TIMER_DEFERRABLE | TIMER_PINNED)
|
|
|
|
|
|
+#define TIMER_DATA_TYPE unsigned long
|
|
|
+#define TIMER_FUNC_TYPE void (*)(TIMER_DATA_TYPE)
|
|
|
+
|
|
|
+static inline void timer_setup(struct timer_list *timer,
|
|
|
+ void (*callback)(struct timer_list *),
|
|
|
+ unsigned int flags)
|
|
|
+{
|
|
|
+ __setup_timer(timer, (TIMER_FUNC_TYPE)callback,
|
|
|
+ (TIMER_DATA_TYPE)timer, flags);
|
|
|
+}
|
|
|
+
|
|
|
+#define from_timer(var, callback_timer, timer_fieldname) \
|
|
|
+ container_of(callback_timer, typeof(*var), timer_fieldname)
|
|
|
+
|
|
|
/**
|
|
|
* timer_pending - is a timer pending?
|
|
|
* @timer: the timer in question
|