diff options
| author | Joonas Lahtinen <joonas.lahtinen@linux.intel.com> | 2019-10-15 11:18:26 +0300 |
|---|---|---|
| committer | Joonas Lahtinen <joonas.lahtinen@linux.intel.com> | 2019-10-15 11:18:26 +0300 |
| commit | fa41d6ee904266fa8739cafa6ec038c3a8e435b7 (patch) | |
| tree | 4d5439bafd38dc730838bb15e6a49e747793d4a7 /include/linux/timerqueue.h | |
| parent | 9cd20ef7803cc53a00c6eb7198b3d870ac7b3766 (diff) | |
| parent | 7ed093602e0e1b60a0fc074a9692687e7d2b723d (diff) | |
| download | cachepc-linux-fa41d6ee904266fa8739cafa6ec038c3a8e435b7.tar.gz cachepc-linux-fa41d6ee904266fa8739cafa6ec038c3a8e435b7.zip | |
Merge drm/drm-next into drm-intel-next-queued
Backmerging to pull in HDR DP code:
https://lists.freedesktop.org/archives/dri-devel/2019-September/236453.html
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Diffstat (limited to 'include/linux/timerqueue.h')
| -rw-r--r-- | include/linux/timerqueue.h | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/include/linux/timerqueue.h b/include/linux/timerqueue.h index 78b8cc73f12f..93884086f392 100644 --- a/include/linux/timerqueue.h +++ b/include/linux/timerqueue.h @@ -12,8 +12,7 @@ struct timerqueue_node { }; struct timerqueue_head { - struct rb_root head; - struct timerqueue_node *next; + struct rb_root_cached rb_root; }; @@ -29,13 +28,14 @@ extern struct timerqueue_node *timerqueue_iterate_next( * * @head: head of timerqueue * - * Returns a pointer to the timer node that has the - * earliest expiration time. + * Returns a pointer to the timer node that has the earliest expiration time. */ static inline struct timerqueue_node *timerqueue_getnext(struct timerqueue_head *head) { - return head->next; + struct rb_node *leftmost = rb_first_cached(&head->rb_root); + + return rb_entry(leftmost, struct timerqueue_node, node); } static inline void timerqueue_init(struct timerqueue_node *node) @@ -43,9 +43,18 @@ static inline void timerqueue_init(struct timerqueue_node *node) RB_CLEAR_NODE(&node->node); } +static inline bool timerqueue_node_queued(struct timerqueue_node *node) +{ + return !RB_EMPTY_NODE(&node->node); +} + +static inline bool timerqueue_node_expires(struct timerqueue_node *node) +{ + return node->expires; +} + static inline void timerqueue_init_head(struct timerqueue_head *head) { - head->head = RB_ROOT; - head->next = NULL; + head->rb_root = RB_ROOT_CACHED; } #endif /* _LINUX_TIMERQUEUE_H */ |
