100 unsigned long rb_parent_color;
105 } __attribute__((aligned(
sizeof(
long))));
114 #define rb_parent(r) ((struct rb_node *)((r)->rb_parent_color & ~3))
115 #define rb_color(r) ((r)->rb_parent_color & 1)
116 #define rb_is_red(r) (!rb_color(r))
117 #define rb_is_black(r) rb_color(r)
118 #define rb_set_red(r) do { (r)->rb_parent_color &= ~1; } while (0)
119 #define rb_set_black(r) do { (r)->rb_parent_color |= 1; } while (0)
121 static inline void rb_set_parent(
struct rb_node *rb,
struct rb_node *p)
123 rb->rb_parent_color = (rb->rb_parent_color & 3) | (
unsigned long)p;
125 static inline void rb_set_color(
struct rb_node *rb,
int color)
127 rb->rb_parent_color = (rb->rb_parent_color & ~1) | color;
130 #define RB_ROOT { NULL, }
131 #define rb_entry(ptr, type, member) container_of(ptr, type, member)
133 #define RB_EMPTY_ROOT(root) ((root)->rb_node == NULL)
134 #define RB_EMPTY_NODE(node) (rb_parent(node) == node)
135 #define RB_CLEAR_NODE(node) (rb_set_parent(node, node))
147 extern void rb_replace_node(
struct rb_node *victim,
struct rb_node *_new,
150 static inline void rb_link_node(
struct rb_node * node,
struct rb_node * parent,
153 node->rb_parent_color = (
unsigned long )parent;
154 node->rb_left = node->rb_right = NULL;
Definition: linuxrbtree.h:108
Definition: linuxrbtree.h:98