]>
Commit | Line | Data |
---|---|---|
1f5a2479 JS |
1 | #ifndef _LINUX_TIMERQUEUE_H |
2 | #define _LINUX_TIMERQUEUE_H | |
3 | ||
4 | #include <linux/rbtree.h> | |
5 | #include <linux/ktime.h> | |
6 | ||
7 | ||
8 | struct timerqueue_node { | |
9 | struct rb_node node; | |
10 | ktime_t expires; | |
11 | }; | |
12 | ||
13 | struct timerqueue_head { | |
14 | struct rb_root head; | |
15 | struct timerqueue_node *next; | |
16 | }; | |
17 | ||
18 | ||
19 | extern void timerqueue_add(struct timerqueue_head *head, | |
20 | struct timerqueue_node *node); | |
21 | extern void timerqueue_del(struct timerqueue_head *head, | |
22 | struct timerqueue_node *node); | |
1f5a2479 JS |
23 | extern struct timerqueue_node *timerqueue_iterate_next( |
24 | struct timerqueue_node *node); | |
25 | ||
45f74264 | 26 | /** |
25985edc | 27 | * timerqueue_getnext - Returns the timer with the earliest expiration time |
45f74264 TG |
28 | * |
29 | * @head: head of timerqueue | |
30 | * | |
31 | * Returns a pointer to the timer node that has the | |
32 | * earliest expiration time. | |
33 | */ | |
34 | static inline | |
35 | struct timerqueue_node *timerqueue_getnext(struct timerqueue_head *head) | |
36 | { | |
37 | return head->next; | |
38 | } | |
39 | ||
1f5a2479 JS |
40 | static inline void timerqueue_init(struct timerqueue_node *node) |
41 | { | |
4c199a93 | 42 | RB_CLEAR_NODE(&node->node); |
1f5a2479 JS |
43 | } |
44 | ||
45 | static inline void timerqueue_init_head(struct timerqueue_head *head) | |
46 | { | |
47 | head->head = RB_ROOT; | |
48 | head->next = NULL; | |
49 | } | |
50 | #endif /* _LINUX_TIMERQUEUE_H */ |