13#define alloca __builtin_alloca 
   43#ifndef ZEPHYR_INCLUDE_SYS_RB_H_ 
   44#define ZEPHYR_INCLUDE_SYS_RB_H_ 
   58#define Z_TBITS(t) ((sizeof(t)) < 8 ? 2 : 3) 
   59#define Z_PBITS(t) (8 * sizeof(t)) 
   60#define Z_MAX_RBTREE_DEPTH (2 * (Z_PBITS(int *) - Z_TBITS(int *) - 1) + 1) 
   87#ifdef CONFIG_MISRA_SANE 
   88        struct rbnode *iter_stack[Z_MAX_RBTREE_DEPTH];
 
   89        unsigned char iter_left[Z_MAX_RBTREE_DEPTH];
 
   96int z_rb_is_black(
struct rbnode *node);
 
   97#ifndef CONFIG_MISRA_SANE 
  117        return z_rb_get_minmax(tree, 0U);
 
  125        return z_rb_get_minmax(tree, 1U);
 
  139#ifndef CONFIG_MISRA_SANE 
  151        z_rb_walk(tree->
root, visit_fn, cookie);
 
  161#ifdef CONFIG_MISRA_SANE 
  162#define _RB_FOREACH_INIT(tree, node) {                                  \ 
  163        .stack   = &(tree)->iter_stack[0],                              \ 
  164        .is_left = &(tree)->iter_left[0],                               \ 
  168#define _RB_FOREACH_INIT(tree, node) {                                  \ 
  169        .stack   = (struct rbnode **)                                   \ 
  170                        alloca((tree)->max_depth * sizeof(struct rbnode *)), \ 
  171        .is_left = (uint8_t *)alloca((tree)->max_depth * sizeof(uint8_t)),\ 
  176struct rbnode *z_rb_foreach_next(
struct rbtree *tree, 
struct _rb_foreach *
f);
 
  199#define RB_FOR_EACH(tree, node) \ 
  200        for (struct _rb_foreach __f = _RB_FOREACH_INIT(tree, node);     \ 
  201             (node = z_rb_foreach_next(tree, &__f));                    \ 
  214#define RB_FOR_EACH_CONTAINER(tree, node, field)                           \ 
  215        for (struct _rb_foreach __f = _RB_FOREACH_INIT(tree, node);        \ 
  216                        ({struct rbnode *n = z_rb_foreach_next(tree, &__f); \ 
  217                         node = n ? CONTAINER_OF(n, __typeof__(*(node)),   \ 
  218                                         field) : NULL; }) != NULL;        \ 
static struct rbnode * rb_get_max(struct rbtree *tree)
Returns the highest-sorted member of the tree.
Definition: rb.h:123
 
bool(* rb_lessthan_t)(struct rbnode *a, struct rbnode *b)
Red/black tree comparison predicate.
Definition: rb.h:81
 
void(* rb_visit_t)(struct rbnode *node, void *cookie)
Definition: rb.h:93
 
static struct rbnode * rb_get_min(struct rbtree *tree)
Returns the lowest-sorted member of the tree.
Definition: rb.h:115
 
void rb_insert(struct rbtree *tree, struct rbnode *node)
Insert node into tree.
 
static void rb_walk(struct rbtree *tree, rb_visit_t visit_fn, void *cookie)
Walk/enumerate a rbtree.
Definition: rb.h:148
 
void rb_remove(struct rbtree *tree, struct rbnode *node)
Remove node from tree.
 
bool rb_contains(struct rbtree *tree, struct rbnode *node)
Returns true if the given node is part of the tree.
 
struct k_futex f
Definition: kobject.c:1330
 
char stack[2048]
Definition: main.c:22
 
#define bool
Definition: stdbool.h:13
 
__INT32_TYPE__ int32_t
Definition: stdint.h:74
 
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
 
struct rbnode * children[2]
Definition: rb.h:50
 
int max_depth
Definition: rb.h:86
 
struct rbnode * root
Definition: rb.h:84
 
rb_lessthan_t lessthan_fn
Definition: rb.h:85