LCOV - code coverage report
Current view: top level - include/linux - timerqueue.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 4 5 80.0 %
Date: 2023-08-24 13:40:31 Functions: 0 0 -

          Line data    Source code
       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             : 
       9             : struct timerqueue_node {
      10             :         struct rb_node node;
      11             :         ktime_t expires;
      12             : };
      13             : 
      14             : struct timerqueue_head {
      15             :         struct rb_root_cached rb_root;
      16             : };
      17             : 
      18             : 
      19             : extern bool timerqueue_add(struct timerqueue_head *head,
      20             :                            struct timerqueue_node *node);
      21             : extern bool timerqueue_del(struct timerqueue_head *head,
      22             :                            struct timerqueue_node *node);
      23             : extern struct timerqueue_node *timerqueue_iterate_next(
      24             :                                                 struct timerqueue_node *node);
      25             : 
      26             : /**
      27             :  * timerqueue_getnext - Returns the timer with the earliest expiration time
      28             :  *
      29             :  * @head: head of timerqueue
      30             :  *
      31             :  * Returns a pointer to the timer node that has the earliest expiration time.
      32             :  */
      33             : static inline
      34             : struct timerqueue_node *timerqueue_getnext(struct timerqueue_head *head)
      35             : {
      36         960 :         struct rb_node *leftmost = rb_first_cached(&head->rb_root);
      37             : 
      38         960 :         return rb_entry_safe(leftmost, struct timerqueue_node, node);
      39             : }
      40             : 
      41             : static inline void timerqueue_init(struct timerqueue_node *node)
      42             : {
      43        1073 :         RB_CLEAR_NODE(&node->node);
      44             : }
      45             : 
      46             : static inline bool timerqueue_node_queued(struct timerqueue_node *node)
      47             : {
      48           0 :         return !RB_EMPTY_NODE(&node->node);
      49             : }
      50             : 
      51             : static inline bool timerqueue_node_expires(struct timerqueue_node *node)
      52             : {
      53             :         return node->expires;
      54             : }
      55             : 
      56             : static inline void timerqueue_init_head(struct timerqueue_head *head)
      57             : {
      58          10 :         head->rb_root = RB_ROOT_CACHED;
      59             : }
      60             : #endif /* _LINUX_TIMERQUEUE_H */

Generated by: LCOV version 1.14