summaryrefslogtreecommitdiff
path: root/backport-include/linux/timer.h
diff options
context:
space:
mode:
authorDominik Sliwa <dominik.sliwa@toradex.com>2017-07-02 16:41:37 +0200
committerDominik Sliwa <dominik.sliwa@toradex.com>2017-07-02 16:41:37 +0200
commit52409fae3e4b8d16b68b61902fc09075cd97b75d (patch)
treee67110145c5843b3f199d872ae285e2546c9ebe2 /backport-include/linux/timer.h
Backports generated from 4.11 kernel
Initial commit. Signed-off-by: Dominik Sliwa <dominik.sliwa@toradex.com>
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 */