Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

tools lib rbtree: Pick some improvements from the kernel rbtree code

The tools/lib/rbtree.c code came from the kernel, removing the
EXPORT_SYMBOL() that make sense only there, unfortunately it is not
being checked with tools/perf/check_headers.sh, will try to remedy this,
till then pick the improvements from:

b0687c1119b4e8c8 ("lib/rbtree: use '+' instead of '|' for setting color.")

That I noticed by doing:

diff -u tools/lib/rbtree.c lib/rbtree.c
diff -u tools/include/linux/rbtree_augmented.h include/linux/rbtree_augmented.h

There is one other cases, but lets pick it in separate patches.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Noah Goldstein <goldstein.w.n@gmail.com>
Link: https://lore.kernel.org/lkml/ZigZzeFoukzRKG1Q@x1
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

+3 -3
+2 -2
tools/include/linux/rbtree_augmented.h
··· 158 158 159 159 static inline void rb_set_parent(struct rb_node *rb, struct rb_node *p) 160 160 { 161 - rb->__rb_parent_color = rb_color(rb) | (unsigned long)p; 161 + rb->__rb_parent_color = rb_color(rb) + (unsigned long)p; 162 162 } 163 163 164 164 static inline void rb_set_parent_color(struct rb_node *rb, 165 165 struct rb_node *p, int color) 166 166 { 167 - rb->__rb_parent_color = (unsigned long)p | color; 167 + rb->__rb_parent_color = (unsigned long)p + color; 168 168 } 169 169 170 170 static inline void
+1 -1
tools/lib/rbtree.c
··· 58 58 59 59 static inline void rb_set_black(struct rb_node *rb) 60 60 { 61 - rb->__rb_parent_color |= RB_BLACK; 61 + rb->__rb_parent_color += RB_BLACK; 62 62 } 63 63 64 64 static inline struct rb_node *rb_red_parent(struct rb_node *red)