summaryrefslogtreecommitdiff
path: root/backport-include/linux/timer.h
diff options
context:
space:
mode:
Diffstat (limited to 'backport-include/linux/timer.h')
-rw-r--r--backport-include/linux/timer.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/backport-include/linux/timer.h b/backport-include/linux/timer.h
new file mode 100644
index 0000000..df560a2
--- /dev/null
+++ b/backport-include/linux/timer.h
@@ -0,0 +1,35 @@
+#ifndef _BACKPORT_TIMER_H
+#define _BACKPORT_TIMER_H
+
+#include_next <linux/timer.h>
+
+#ifndef setup_deferrable_timer
+/*
+ * The TIMER_DEFERRABLE flag has not been around since 3.0 so
+ * two different backports are needed here.
+ */
+#ifdef TIMER_DEFERRABLE
+#define setup_deferrable_timer(timer, fn, data) \
+ __setup_timer((timer), (fn), (data), TIMER_DEFERRABLE)
+#else
+static inline void setup_deferrable_timer_key(struct timer_list *timer,
+ const char *name,
+ struct lock_class_key *key,
+ void (*func)(unsigned long),
+ unsigned long data)
+{
+ timer->function = func;
+ timer->data = data;
+ init_timer_deferrable_key(timer, name, key);
+}
+#define setup_deferrable_timer(timer, fn, data) \
+ do { \
+ static struct lock_class_key __key; \
+ setup_deferrable_timer_key((timer), #timer, &__key, \
+ (fn), (data)); \
+ } while (0)
+#endif
+
+#endif
+
+#endif /* _BACKPORT_TIMER_H */