1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef _LINUX_HRTIMER_TYPES_H |
3 | #define _LINUX_HRTIMER_TYPES_H |
4 | |
5 | #include <linux/types.h> |
6 | #include <linux/timerqueue_types.h> |
7 | |
8 | struct hrtimer_clock_base; |
9 | |
10 | /* |
11 | * Return values for the callback function |
12 | */ |
13 | enum hrtimer_restart { |
14 | HRTIMER_NORESTART, /* Timer is not restarted */ |
15 | HRTIMER_RESTART, /* Timer must be restarted */ |
16 | }; |
17 | |
18 | /** |
19 | * struct hrtimer - the basic hrtimer structure |
20 | * @node: timerqueue node, which also manages node.expires, |
21 | * the absolute expiry time in the hrtimers internal |
22 | * representation. The time is related to the clock on |
23 | * which the timer is based. Is setup by adding |
24 | * slack to the _softexpires value. For non range timers |
25 | * identical to _softexpires. |
26 | * @_softexpires: the absolute earliest expiry time of the hrtimer. |
27 | * The time which was given as expiry time when the timer |
28 | * was armed. |
29 | * @function: timer expiry callback function |
30 | * @base: pointer to the timer base (per cpu and per clock) |
31 | * @state: state information (See bit values above) |
32 | * @is_rel: Set if the timer was armed relative |
33 | * @is_soft: Set if hrtimer will be expired in soft interrupt context. |
34 | * @is_hard: Set if hrtimer will be expired in hard interrupt context |
35 | * even on RT. |
36 | * |
37 | * The hrtimer structure must be initialized by hrtimer_init() |
38 | */ |
39 | struct hrtimer { |
40 | struct timerqueue_node node; |
41 | ktime_t _softexpires; |
42 | enum hrtimer_restart (*function)(struct hrtimer *); |
43 | struct hrtimer_clock_base *base; |
44 | u8 state; |
45 | u8 is_rel; |
46 | u8 is_soft; |
47 | u8 is_hard; |
48 | }; |
49 | |
50 | #endif /* _LINUX_HRTIMER_TYPES_H */ |
51 | |