101 unsigned long rb_parent_color;
106} __attribute__((aligned(
sizeof(
long))));
115#define rb_parent(r) ((struct rb_node *)((r)->rb_parent_color & ~3))
116#define rb_color(r) ((r)->rb_parent_color & 1)
117#define rb_is_red(r) (!rb_color(r))
118#define rb_is_black(r) rb_color(r)
119#define rb_set_red(r) do { (r)->rb_parent_color &= ~1; } while (0)
120#define rb_set_black(r) do { (r)->rb_parent_color |= 1; } while (0)
122static inline void rb_set_parent(
struct rb_node *rb,
struct rb_node *p)
124 rb->rb_parent_color = (rb->rb_parent_color & 3) | (
unsigned long)p;
126static inline void rb_set_color(
struct rb_node *rb,
int color)
128 rb->rb_parent_color = (rb->rb_parent_color & ~1) | color;
131#define RB_ROOT { NULL, }
132#define rb_entry(ptr, type, member) container_of(ptr, type, member)
134#define RB_EMPTY_ROOT(root) ((root)->rb_node == NULL)
135#define RB_EMPTY_NODE(node) (rb_parent(node) == node)
136#define RB_CLEAR_NODE(node) (rb_set_parent(node, node))
148extern void rb_replace_node(
struct rb_node *victim,
struct rb_node *_new,
151static inline void rb_link_node(
struct rb_node * node,
struct rb_node * parent,
154 node->rb_parent_color = (
unsigned long )parent;
155 node->rb_left = node->rb_right = NULL;
Definition linuxrbtree.h:100
Definition linuxrbtree.h:110