diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/timer.h | 24 | ||||
-rw-r--r-- | include/linux/workqueue.h | 6 |
2 files changed, 12 insertions, 18 deletions
diff --git a/include/linux/timer.h b/include/linux/timer.h index 363f26a4..9667acf9 100644 --- a/include/linux/timer.h +++ b/include/linux/timer.h @@ -6,27 +6,22 @@ struct timer_list { unsigned long expires; - void (*function)(unsigned long); - unsigned long data; + void (*function)(struct timer_list *timer); bool pending; }; -static inline void init_timer(struct timer_list *timer) +static inline void timer_setup(struct timer_list *timer, + void (*func)(struct timer_list *), + unsigned int flags) { memset(timer, 0, sizeof(*timer)); + timer->function = func; } -#define __init_timer(_timer, _flags) init_timer(_timer) +#define timer_setup_on_stack(timer, callback, flags) \ + timer_setup(timer, callback, flags) -#define __setup_timer(_timer, _fn, _data, _flags) \ - do { \ - __init_timer((_timer), (_flags)); \ - (_timer)->function = (_fn); \ - (_timer)->data = (_data); \ - } while (0) - -#define setup_timer(timer, fn, data) \ - __setup_timer((timer), (fn), (data), 0) +#define destroy_timer_on_stack(timer) do {} while (0) static inline int timer_pending(const struct timer_list *timer) { @@ -36,8 +31,9 @@ static inline int timer_pending(const struct timer_list *timer) int del_timer(struct timer_list * timer); int del_timer_sync(struct timer_list *timer); +#define del_singleshot_timer_sync(timer) del_timer_sync(timer) + int mod_timer(struct timer_list *timer, unsigned long expires); -//extern int mod_timer_pending(struct timer_list *timer, unsigned long expires); static inline void add_timer(struct timer_list *timer) { diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h index 213562f2..1406c958 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h @@ -8,7 +8,7 @@ struct task_struct; struct workqueue_struct; struct work_struct; typedef void (*work_func_t)(struct work_struct *work); -void delayed_work_timer_fn(unsigned long __data); +void delayed_work_timer_fn(struct timer_list *); #define work_data_bits(work) ((unsigned long *)(&(work)->data)) @@ -44,9 +44,7 @@ struct delayed_work { #define INIT_DELAYED_WORK(_work, _func) \ do { \ INIT_WORK(&(_work)->work, (_func)); \ - __setup_timer(&(_work)->timer, delayed_work_timer_fn, \ - (unsigned long)(_work), \ - TIMER_IRQSAFE); \ + timer_setup(&(_work)->timer, delayed_work_timer_fn, 0); \ } while (0) static inline struct delayed_work *to_delayed_work(struct work_struct *work) |