summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backport/backport-include/linux/timer.h28
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 */