root/tools/perf/util/rblist.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. rblist__empty
  2. rblist__nr_entries

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef __PERF_RBLIST_H
   3 #define __PERF_RBLIST_H
   4 
   5 #include <linux/rbtree.h>
   6 #include <stdbool.h>
   7 
   8 /*
   9  * create node structs of the form:
  10  * struct my_node {
  11  *     struct rb_node rb_node;
  12  *     ... my data ...
  13  * };
  14  *
  15  * create list structs of the form:
  16  * struct mylist {
  17  *     struct rblist rblist;
  18  *     ... my data ...
  19  * };
  20  */
  21 
  22 struct rblist {
  23         struct rb_root_cached entries;
  24         unsigned int   nr_entries;
  25 
  26         int (*node_cmp)(struct rb_node *rbn, const void *entry);
  27         struct rb_node *(*node_new)(struct rblist *rlist, const void *new_entry);
  28         void (*node_delete)(struct rblist *rblist, struct rb_node *rb_node);
  29 };
  30 
  31 void rblist__init(struct rblist *rblist);
  32 void rblist__exit(struct rblist *rblist);
  33 void rblist__delete(struct rblist *rblist);
  34 int rblist__add_node(struct rblist *rblist, const void *new_entry);
  35 void rblist__remove_node(struct rblist *rblist, struct rb_node *rb_node);
  36 struct rb_node *rblist__find(struct rblist *rblist, const void *entry);
  37 struct rb_node *rblist__findnew(struct rblist *rblist, const void *entry);
  38 struct rb_node *rblist__entry(const struct rblist *rblist, unsigned int idx);
  39 
  40 static inline bool rblist__empty(const struct rblist *rblist)
  41 {
  42         return rblist->nr_entries == 0;
  43 }
  44 
  45 static inline unsigned int rblist__nr_entries(const struct rblist *rblist)
  46 {
  47         return rblist->nr_entries;
  48 }
  49 
  50 #endif /* __PERF_RBLIST_H */

/* [<][>][^][v][top][bottom][index][help] */