diff options
author | John Stultz <john.stultz@linaro.org> | 2011-08-10 13:37:59 -0400 |
---|---|---|
committer | John Stultz <john.stultz@linaro.org> | 2011-08-10 17:55:20 -0400 |
commit | 4b41308d2d0398409620613c7eaaaf52c738b042 (patch) | |
tree | 47a6becae6272eb9c06e57a0a9d1698b8f1811c8 /include/linux/alarmtimer.h | |
parent | 6af7e471e5a7746b8024d70b4363d3dfe41d36b8 (diff) |
alarmtimers: Change alarmtimer functions to return alarmtimer_restart values
In order to properly fix the denial of service issue with high freq
periodic alarm timers, we need to push the re-arming logic into the
alarm timer handler, much as the hrtimer code does.
This patch introduces alarmtimer_restart enum and changes the
alarmtimer handler declarations to use it as a return value. Further,
to ease following changes, it extends the alarmtimer handler functions
to also take the time at expiration. No logic is yet modified.
CC: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Diffstat (limited to 'include/linux/alarmtimer.h')
-rw-r--r-- | include/linux/alarmtimer.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/include/linux/alarmtimer.h b/include/linux/alarmtimer.h index c5d6095b46f8..0289eb29e794 100644 --- a/include/linux/alarmtimer.h +++ b/include/linux/alarmtimer.h | |||
@@ -13,6 +13,11 @@ enum alarmtimer_type { | |||
13 | ALARM_NUMTYPE, | 13 | ALARM_NUMTYPE, |
14 | }; | 14 | }; |
15 | 15 | ||
16 | enum alarmtimer_restart { | ||
17 | ALARMTIMER_NORESTART, | ||
18 | ALARMTIMER_RESTART, | ||
19 | }; | ||
20 | |||
16 | /** | 21 | /** |
17 | * struct alarm - Alarm timer structure | 22 | * struct alarm - Alarm timer structure |
18 | * @node: timerqueue node for adding to the event list this value | 23 | * @node: timerqueue node for adding to the event list this value |
@@ -26,14 +31,14 @@ enum alarmtimer_type { | |||
26 | struct alarm { | 31 | struct alarm { |
27 | struct timerqueue_node node; | 32 | struct timerqueue_node node; |
28 | ktime_t period; | 33 | ktime_t period; |
29 | void (*function)(struct alarm *); | 34 | enum alarmtimer_restart (*function)(struct alarm *, ktime_t now); |
30 | enum alarmtimer_type type; | 35 | enum alarmtimer_type type; |
31 | bool enabled; | 36 | bool enabled; |
32 | void *data; | 37 | void *data; |
33 | }; | 38 | }; |
34 | 39 | ||
35 | void alarm_init(struct alarm *alarm, enum alarmtimer_type type, | 40 | void alarm_init(struct alarm *alarm, enum alarmtimer_type type, |
36 | void (*function)(struct alarm *)); | 41 | enum alarmtimer_restart (*function)(struct alarm *, ktime_t)); |
37 | void alarm_start(struct alarm *alarm, ktime_t start, ktime_t period); | 42 | void alarm_start(struct alarm *alarm, ktime_t start, ktime_t period); |
38 | void alarm_cancel(struct alarm *alarm); | 43 | void alarm_cancel(struct alarm *alarm); |
39 | 44 | ||