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