diff options
author | John Stultz <john.stultz@linaro.org> | 2011-01-11 12:42:13 -0500 |
---|---|---|
committer | John Stultz <john.stultz@linaro.org> | 2011-04-26 17:01:44 -0400 |
commit | ff3ead96d17f47ee70c294a5cc2cce9b61e82f0f (patch) | |
tree | e87fc16e1fc4a80b9591c2b1d02c99459254aa95 /include/linux/alarmtimer.h | |
parent | 88d19cf37952a7e1e38b2bf87a00f0e857e63180 (diff) |
timers: Introduce in-kernel alarm-timer interface
This provides the in kernel interface and infrastructure for
alarm-timers.
Alarm-timers are a hybrid style timer, similar to hrtimers,
but when the system is suspended, the RTC device is set to
fire and wake the system for when the soonest alarm-timer
expires.
The concept for Alarm-timers was inspired by the Android Alarm
driver (by Arve Hjønnevåg) found in the Android kernel tree.
See: http://android.git.kernel.org/?p=kernel/common.git;a=blob;f=drivers/rtc/alarm.c;h=1250edfbdf3302f5e4ea6194847c6ef4bb7beb1c;hb=android-2.6.36
This in-kernel interface should be fairly compatible with the
Android alarm driver in-kernel interface, but has the advantage
of utilizing the new RTC timerqueue code instead of doing direct
RTC manipulation.
CC: Arve Hjønnevåg <arve@android.com>
CC: Thomas Gleixner <tglx@linutronix.de>
CC: Alessandro Zummo <a.zummo@towertech.it>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Diffstat (limited to 'include/linux/alarmtimer.h')
-rw-r--r-- | include/linux/alarmtimer.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/include/linux/alarmtimer.h b/include/linux/alarmtimer.h new file mode 100644 index 000000000000..6b364b2e2074 --- /dev/null +++ b/include/linux/alarmtimer.h | |||
@@ -0,0 +1,30 @@ | |||
1 | #ifndef _LINUX_ALARMTIMER_H | ||
2 | #define _LINUX_ALARMTIMER_H | ||
3 | |||
4 | #include <linux/time.h> | ||
5 | #include <linux/hrtimer.h> | ||
6 | #include <linux/timerqueue.h> | ||
7 | #include <linux/rtc.h> | ||
8 | |||
9 | enum alarmtimer_type { | ||
10 | ALARM_REALTIME, | ||
11 | ALARM_BOOTTIME, | ||
12 | |||
13 | ALARM_NUMTYPE, | ||
14 | }; | ||
15 | |||
16 | struct alarm { | ||
17 | struct timerqueue_node node; | ||
18 | ktime_t period; | ||
19 | void (*function)(struct alarm *); | ||
20 | enum alarmtimer_type type; | ||
21 | char enabled; | ||
22 | void *data; | ||
23 | }; | ||
24 | |||
25 | void alarm_init(struct alarm *alarm, enum alarmtimer_type type, | ||
26 | void (*function)(struct alarm *)); | ||
27 | void alarm_start(struct alarm *alarm, ktime_t start, ktime_t period); | ||
28 | void alarm_cancel(struct alarm *alarm); | ||
29 | |||
30 | #endif | ||