]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - include/linux/timerqueue.h
rhashtable: Mark internal/private inline functions as such
[mirror_ubuntu-bionic-kernel.git] / include / linux / timerqueue.h
CommitLineData
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
8struct timerqueue_node {
9 struct rb_node node;
10 ktime_t expires;
11};
12
13struct timerqueue_head {
14 struct rb_root head;
15 struct timerqueue_node *next;
16};
17
18
19extern void timerqueue_add(struct timerqueue_head *head,
20 struct timerqueue_node *node);
21extern void timerqueue_del(struct timerqueue_head *head,
22 struct timerqueue_node *node);
1f5a2479
JS
23extern 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 */
34static inline
35struct timerqueue_node *timerqueue_getnext(struct timerqueue_head *head)
36{
37 return head->next;
38}
39
1f5a2479
JS
40static inline void timerqueue_init(struct timerqueue_node *node)
41{
4c199a93 42 RB_CLEAR_NODE(&node->node);
1f5a2479
JS
43}
44
45static 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 */