File: /Users/paulross/dev/linux/linux-3.13/include/linux/timerqueue.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       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);
      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
      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: 
      40: static inline void timerqueue_init(struct timerqueue_node *node)
      41: {
      42:     RB_CLEAR_NODE(&node->node);
      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 */
      51: