| From: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Subject: tools lib rbtree: pick some improvements from the kernel rbtree code |
| Date: Tue, 23 Apr 2024 17:27:57 -0300 |
| |
| The tools/lib/rbtree.c code came from the kernel. Remove 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. Until |
| 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. |
| |
| Link: https://lkml.kernel.org/r/ZigZzeFoukzRKG1Q@x1 |
| Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| 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: Noah Goldstein <goldstein.w.n@gmail.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| tools/include/linux/rbtree_augmented.h | 4 ++-- |
| tools/lib/rbtree.c | 2 +- |
| 2 files changed, 3 insertions(+), 3 deletions(-) |
| |
| --- a/tools/include/linux/rbtree_augmented.h~tools-lib-rbtree-pick-some-improvements-from-the-kernel-rbtree-code |
| +++ a/tools/include/linux/rbtree_augmented.h |
| @@ -158,13 +158,13 @@ RB_DECLARE_CALLBACKS(RBSTATIC, RBNAME, |
| |
| static inline void rb_set_parent(struct rb_node *rb, struct rb_node *p) |
| { |
| - rb->__rb_parent_color = rb_color(rb) | (unsigned long)p; |
| + rb->__rb_parent_color = rb_color(rb) + (unsigned long)p; |
| } |
| |
| static inline void rb_set_parent_color(struct rb_node *rb, |
| struct rb_node *p, int color) |
| { |
| - rb->__rb_parent_color = (unsigned long)p | color; |
| + rb->__rb_parent_color = (unsigned long)p + color; |
| } |
| |
| static inline void |
| --- a/tools/lib/rbtree.c~tools-lib-rbtree-pick-some-improvements-from-the-kernel-rbtree-code |
| +++ a/tools/lib/rbtree.c |
| @@ -58,7 +58,7 @@ |
| |
| static inline void rb_set_black(struct rb_node *rb) |
| { |
| - rb->__rb_parent_color |= RB_BLACK; |
| + rb->__rb_parent_color += RB_BLACK; |
| } |
| |
| static inline struct rb_node *rb_red_parent(struct rb_node *red) |
| _ |