Messages in this thread | | | Date | Fri, 23 Nov 2018 17:14:25 +0100 | From | Jiri Olsa <> | Subject | Re: [PATCH] perf map: remove extra indirection from map__find() |
| |
On Fri, Nov 23, 2018 at 02:42:39AM -0800, Eric Saint-Etienne wrote: > A double pointer is used in map__find() where a single pointer is enough > because the function doesn't affect the rbtree and the rbtree is locked. > > Signed-off-by: Eric Saint-Etienne <eric.saint.etienne@oracle.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
thanks, jirka
> --- > tools/perf/util/map.c | 13 ++++++------- > 1 file changed, 6 insertions(+), 7 deletions(-) > > diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c > index 354e545..3dac766 100644 > --- a/tools/perf/util/map.c > +++ b/tools/perf/util/map.c > @@ -846,19 +846,18 @@ void maps__remove(struct maps *maps, struct map *map) > > struct map *maps__find(struct maps *maps, u64 ip) > { > - struct rb_node **p, *parent = NULL; > + struct rb_node *p; > struct map *m; > > down_read(&maps->lock); > > - p = &maps->entries.rb_node; > - while (*p != NULL) { > - parent = *p; > - m = rb_entry(parent, struct map, rb_node); > + p = maps->entries.rb_node; > + while (p != NULL) { > + m = rb_entry(p, struct map, rb_node); > if (ip < m->start) > - p = &(*p)->rb_left; > + p = p->rb_left; > else if (ip >= m->end) > - p = &(*p)->rb_right; > + p = p->rb_right; > else > goto out; > } > -- > 1.8.3.1 >
| |