mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
ff3ead96d1
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>
30 lines
624 B
C
30 lines
624 B
C
#ifndef _LINUX_ALARMTIMER_H
|
|
#define _LINUX_ALARMTIMER_H
|
|
|
|
#include <linux/time.h>
|
|
#include <linux/hrtimer.h>
|
|
#include <linux/timerqueue.h>
|
|
#include <linux/rtc.h>
|
|
|
|
enum alarmtimer_type {
|
|
ALARM_REALTIME,
|
|
ALARM_BOOTTIME,
|
|
|
|
ALARM_NUMTYPE,
|
|
};
|
|
|
|
struct alarm {
|
|
struct timerqueue_node node;
|
|
ktime_t period;
|
|
void (*function)(struct alarm *);
|
|
enum alarmtimer_type type;
|
|
char enabled;
|
|
void *data;
|
|
};
|
|
|
|
void alarm_init(struct alarm *alarm, enum alarmtimer_type type,
|
|
void (*function)(struct alarm *));
|
|
void alarm_start(struct alarm *alarm, ktime_t start, ktime_t period);
|
|
void alarm_cancel(struct alarm *alarm);
|
|
|
|
#endif
|