mirror of
https://github.com/armbian/linux.git
synced 2026-01-06 10:13:00 -08:00
alarmtimer: add alarm_restart
Analogous to hrtimer_restart, restart an alarmtimer after the expires time has already been updated (as with alarm_forward). Change-Id: Ia2613bbb467404cb2c35c11efa772bc56294963a Signed-off-by: Todd Poynor <toddpoynor@google.com>
This commit is contained in:
committed by
Arve Hjønnevåg
parent
3ab74abdc3
commit
0ccfc3ce82
@@ -44,6 +44,7 @@ struct alarm {
|
||||
void alarm_init(struct alarm *alarm, enum alarmtimer_type type,
|
||||
enum alarmtimer_restart (*function)(struct alarm *, ktime_t));
|
||||
int alarm_start(struct alarm *alarm, ktime_t start);
|
||||
void alarm_restart(struct alarm *alarm);
|
||||
int alarm_try_to_cancel(struct alarm *alarm);
|
||||
int alarm_cancel(struct alarm *alarm);
|
||||
|
||||
|
||||
@@ -324,6 +324,18 @@ int alarm_start(struct alarm *alarm, ktime_t start)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void alarm_restart(struct alarm *alarm)
|
||||
{
|
||||
struct alarm_base *base = &alarm_bases[alarm->type];
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&base->lock, flags);
|
||||
hrtimer_set_expires(&alarm->timer, alarm->node.expires);
|
||||
hrtimer_restart(&alarm->timer);
|
||||
alarmtimer_enqueue(base, alarm);
|
||||
spin_unlock_irqrestore(&base->lock, flags);
|
||||
}
|
||||
|
||||
/**
|
||||
* alarm_try_to_cancel - Tries to cancel an alarm timer
|
||||
* @alarm: ptr to alarm to be canceled
|
||||
|
||||
Reference in New Issue
Block a user