Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768/* SPDX-License-Identifier: GPL-2.0 */#ifndef _LINUX_ALARMTIMER_H#define _LINUX_ALARMTIMER_H
#include <linux/time.h>#include <linux/hrtimer.h>#include <linux/timerqueue.h>
struct rtc_device;
enum alarmtimer_type { ALARM_REALTIME, ALARM_BOOTTIME,
/* Supported types end here */ ALARM_NUMTYPE,
/* Used for tracing information. No usable types. */ ALARM_REALTIME_FREEZER, ALARM_BOOTTIME_FREEZER,};
#define ALARMTIMER_STATE_INACTIVE 0x00#define ALARMTIMER_STATE_ENQUEUED 0x01
/** * struct alarm - Alarm timer structure * @node: timerqueue node for adding to the event list this value * also includes the expiration time. * @timer: hrtimer used to schedule events while running * @function: Function pointer to be executed when the timer fires. * @type: Alarm type (BOOTTIME/REALTIME). * @state: Flag that represents if the alarm is set to fire or not. * @data: Internal data value. */struct alarm { struct timerqueue_node node; struct hrtimer timer; void (*function)(struct alarm *, ktime_t now); enum alarmtimer_type type; int state; void *data;};
static __always_inline ktime_t alarm_get_expires(struct alarm *alarm){ return alarm->node.expires;}
void alarm_init(struct alarm *alarm, enum alarmtimer_type type, void (*function)(struct alarm *, ktime_t));bool alarm_start_timer(struct alarm *alarm, ktime_t expires, bool relative);int alarm_try_to_cancel(struct alarm *alarm);int alarm_cancel(struct alarm *alarm);
u64 alarm_forward(struct alarm *alarm, ktime_t now, ktime_t interval);u64 alarm_forward_now(struct alarm *alarm, ktime_t interval);ktime_t alarm_expires_remaining(const struct alarm *alarm);
#ifdef CONFIG_RTC_CLASS/* Provide way to access the rtc device being used by alarmtimers */struct rtc_device *alarmtimer_get_rtcdev(void);#elsestatic inline struct rtc_device *alarmtimer_get_rtcdev(void) { return NULL; }#endif
#endif