Merge tag 'powerpc-6.9-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc...
[linux-block.git] / include / linux / hrtimer_types.h
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 */