mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 22:21:21 +00:00
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>
This commit is contained in:
parent
6af7e471e5
commit
4b41308d2d
2 changed files with 16 additions and 6 deletions
|
@ -13,6 +13,11 @@ enum alarmtimer_type {
|
|||
ALARM_NUMTYPE,
|
||||
};
|
||||
|
||||
enum alarmtimer_restart {
|
||||
ALARMTIMER_NORESTART,
|
||||
ALARMTIMER_RESTART,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct alarm - Alarm timer structure
|
||||
* @node: timerqueue node for adding to the event list this value
|
||||
|
@ -26,14 +31,14 @@ enum alarmtimer_type {
|
|||
struct alarm {
|
||||
struct timerqueue_node node;
|
||||
ktime_t period;
|
||||
void (*function)(struct alarm *);
|
||||
enum alarmtimer_restart (*function)(struct alarm *, ktime_t now);
|
||||
enum alarmtimer_type type;
|
||||
bool enabled;
|
||||
void *data;
|
||||
};
|
||||
|
||||
void alarm_init(struct alarm *alarm, enum alarmtimer_type type,
|
||||
void (*function)(struct alarm *));
|
||||
enum alarmtimer_restart (*function)(struct alarm *, ktime_t));
|
||||
void alarm_start(struct alarm *alarm, ktime_t start, ktime_t period);
|
||||
void alarm_cancel(struct alarm *alarm);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue