diff options
author | Johannes Berg <johannes.berg@intel.com> | 2017-10-11 15:41:56 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2017-10-11 17:00:42 +0200 |
commit | 78fd1c0acc64ab5bfff310ae023922226b6ff696 (patch) | |
tree | 185c632e243707736af4e3e8eb2e073f3ea91474 /backport | |
parent | f1c4a5ebb291c3aaa9c296778da94ed537565b15 (diff) |
backports: backport from_timer() and timer_setup()
These are needed for Kees's new timer API, and luckily
he already provided them for conversion purposes :-)
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'backport')
-rw-r--r-- | backport/backport-include/linux/timer.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/backport/backport-include/linux/timer.h b/backport/backport-include/linux/timer.h index df560a26..9824ea6b 100644 --- a/backport/backport-include/linux/timer.h +++ b/backport/backport-include/linux/timer.h @@ -29,7 +29,35 @@ static inline void setup_deferrable_timer_key(struct timer_list *timer, (fn), (data)); \ } while (0) #endif +#endif + +#ifndef TIMER_DEFERRABLE +#define TIMER_DEFERRABLE 1 +#endif + +#ifndef from_timer +#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) +{ +#ifdef __setup_timer + __setup_timer(timer, (TIMER_FUNC_TYPE) callback, + (TIMER_DATA_TYPE) timer, flags); +#else + if (flags & TIMER_DEFERRABLE) + setup_deferrable_timer(timer, (TIMER_FUNC_TYPE) callback, + (TIMER_DATA_TYPE) timer); + else + setup_timer(timer, (TIMER_FUNC_TYPE) callback, + (TIMER_DATA_TYPE) timer); +#endif +} +#define from_timer(var, callback_timer, timer_fieldname) \ + container_of(callback_timer, typeof(*var), timer_fieldname) #endif #endif /* _BACKPORT_TIMER_H */ |