alarmtimer: add alarm_start_relative
authorTodd Poynor <toddpoynor@google.com>
Sat, 11 May 2013 00:41:06 +0000 (17:41 -0700)
committerArve Hjønnevåg <arve@android.com>
Mon, 1 Jul 2013 21:16:28 +0000 (14:16 -0700)
Start an alarmtimer with an expires time relative to the current time
of the associated clock.

Change-Id: Ifb5309a15e0d502bb4d0209ca5510a56ee7fa88c
Signed-off-by: Todd Poynor <toddpoynor@google.com>
include/linux/alarmtimer.h
kernel/time/alarmtimer.c

index 8e696a105a4de263357ca44c84254e3fe10fdd74..f47dadc6dab3357e86a1fd78a6a1545ef683ce4a 100644 (file)
@@ -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);
+int alarm_start_relative(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);
index 2f125e74d33ddba3fee22ba7c1aa2883aed25227..adfcd78e79fd474ba2835dc4a9db3494ea6c4bd5 100644 (file)
@@ -305,7 +305,7 @@ void alarm_init(struct alarm *alarm, enum alarmtimer_type type,
 }
 
 /**
- * alarm_start - Sets an alarm to fire
+ * alarm_start - Sets an absolute alarm to fire
  * @alarm: ptr to alarm to set
  * @start: time to run the alarm
  */
@@ -324,6 +324,19 @@ int alarm_start(struct alarm *alarm, ktime_t start)
        return ret;
 }
 
+/**
+ * alarm_start_relative - Sets a relative alarm to fire
+ * @alarm: ptr to alarm to set
+ * @start: time relative to now to run the alarm
+ */
+int alarm_start_relative(struct alarm *alarm, ktime_t start)
+{
+       struct alarm_base *base = &alarm_bases[alarm->type];
+
+       start = ktime_add(start, base->gettime());
+       return alarm_start(alarm, start);
+}
+
 void alarm_restart(struct alarm *alarm)
 {
        struct alarm_base *base = &alarm_bases[alarm->type];