Blame view
include/linux/alarmtimer.h
1.94 KB
b24413180 License cleanup: ... |
1 |
/* SPDX-License-Identifier: GPL-2.0 */ |
ff3ead96d timers: Introduce... |
2 3 4 5 6 7 |
#ifndef _LINUX_ALARMTIMER_H #define _LINUX_ALARMTIMER_H #include <linux/time.h> #include <linux/hrtimer.h> #include <linux/timerqueue.h> |
3758b0f86 alarmtimers: Avoi... |
8 9 |
struct rtc_device; |
ff3ead96d timers: Introduce... |
10 11 12 13 |
enum alarmtimer_type { ALARM_REALTIME, ALARM_BOOTTIME, |
4a057549d alarmtimer: Add t... |
14 |
/* Supported types end here */ |
ff3ead96d timers: Introduce... |
15 |
ALARM_NUMTYPE, |
4a057549d alarmtimer: Add t... |
16 17 18 19 |
/* Used for tracing information. No usable types. */ ALARM_REALTIME_FREEZER, ALARM_BOOTTIME_FREEZER, |
ff3ead96d timers: Introduce... |
20 |
}; |
4b41308d2 alarmtimers: Chan... |
21 22 23 24 |
enum alarmtimer_restart { ALARMTIMER_NORESTART, ALARMTIMER_RESTART, }; |
a28cde81a alarmtimers: Add ... |
25 26 27 |
#define ALARMTIMER_STATE_INACTIVE 0x00 #define ALARMTIMER_STATE_ENQUEUED 0x01 |
a28cde81a alarmtimers: Add ... |
28 |
|
180bf812c timers: Improve a... |
29 30 31 32 |
/** * struct alarm - Alarm timer structure * @node: timerqueue node for adding to the event list this value * also includes the expiration time. |
af4afb400 alarmtimer: Fix c... |
33 |
* @timer: hrtimer used to schedule events while running |
180bf812c timers: Improve a... |
34 |
* @function: Function pointer to be executed when the timer fires. |
af4afb400 alarmtimer: Fix c... |
35 36 |
* @type: Alarm type (BOOTTIME/REALTIME). * @state: Flag that represents if the alarm is set to fire or not. |
180bf812c timers: Improve a... |
37 38 |
* @data: Internal data value. */ |
ff3ead96d timers: Introduce... |
39 40 |
struct alarm { struct timerqueue_node node; |
dae373be9 alarmtimer: Use h... |
41 |
struct hrtimer timer; |
4b41308d2 alarmtimers: Chan... |
42 |
enum alarmtimer_restart (*function)(struct alarm *, ktime_t now); |
ff3ead96d timers: Introduce... |
43 |
enum alarmtimer_type type; |
a28cde81a alarmtimers: Add ... |
44 |
int state; |
ff3ead96d timers: Introduce... |
45 46 47 48 |
void *data; }; void alarm_init(struct alarm *alarm, enum alarmtimer_type type, |
4b41308d2 alarmtimers: Chan... |
49 |
enum alarmtimer_restart (*function)(struct alarm *, ktime_t)); |
b193217e6 alarmtimer: Get r... |
50 51 |
void alarm_start(struct alarm *alarm, ktime_t start); void alarm_start_relative(struct alarm *alarm, ktime_t start); |
6cffe00f7 alarmtimer: Add f... |
52 |
void alarm_restart(struct alarm *alarm); |
9082c465a alarmtimers: Add ... |
53 54 |
int alarm_try_to_cancel(struct alarm *alarm); int alarm_cancel(struct alarm *alarm); |
ff3ead96d timers: Introduce... |
55 |
|
dce75a8c7 alarmtimers: Add ... |
56 |
u64 alarm_forward(struct alarm *alarm, ktime_t now, ktime_t interval); |
6cffe00f7 alarmtimer: Add f... |
57 58 |
u64 alarm_forward_now(struct alarm *alarm, ktime_t interval); ktime_t alarm_expires_remaining(const struct alarm *alarm); |
dce75a8c7 alarmtimers: Add ... |
59 |
|
fd928f3e3 alarmtimer: Make ... |
60 |
#ifdef CONFIG_RTC_CLASS |
57c498fa5 alarmtimer: Provi... |
61 62 |
/* Provide way to access the rtc device being used by alarmtimers */ struct rtc_device *alarmtimer_get_rtcdev(void); |
fd928f3e3 alarmtimer: Make ... |
63 64 65 |
#else static inline struct rtc_device *alarmtimer_get_rtcdev(void) { return NULL; } #endif |
57c498fa5 alarmtimer: Provi... |
66 |
|
ff3ead96d timers: Introduce... |
67 |
#endif |