@@ -32,4 +32,20 @@ static inline void setup_deferrable_timer_key(struct timer_list *timer,
#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)
+{
+ __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)
+#endif
+
#endif /* _BACKPORT_TIMER_H */