perf tools: Use maps__first()/map__next()
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 4bb7123dcfa7aa1d963ad4a8f01b88d54a2bb873 Gitweb: http://git.kernel.org/tip/4bb7123dcfa7aa1d963ad4a8f01b88d54a2bb873 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Fri, 22 May 2015 11:52:22 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Wed, 27 May 2015 12:21:45 -0300
perf tools: Use maps__first()/map__next()
In a few more remaining places, for consistency.
Cc Adrian Hunter <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc David Ahern <[email protected]>
Cc Don Zickus <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Stephane Eranian <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/tests/vmlinux-kallsyms.c | 34 +++++++++++++++++----------------- tools/perf/util/event.c | 7 +++---- tools/perf/util/map.c | 7 ++++--- tools/perf/util/probe-event.c | 6 +++--- tools/perf/util/symbol.c | 23 ++++++++++------------- 5 files changed, 37 insertions(+), 40 deletions(-)
tools/perf/tests/vmlinux-kallsyms.c +17 -17
@@ -23,9 +23,10 @@ int test__vmlinux_matches_kallsyms(void)int err =-1 ;struct rb_node *nd;struct symbol *sym; -struct map *kallsyms_map, *vmlinux_map; +struct map *kallsyms_map, *vmlinux_map, *map;struct machine kallsyms, vmlinux;enum map_type type =MAP__FUNCTION ; +struct rb_root *maps = &vmlinux.kmaps.maps[type];u64 mem_start, mem_end;/*
@@ -184,8 +185,8 @@ detour:pr_info ("Maps only in vmlinux:\n" ); -for (nd =rb_first (&vmlinux.kmaps.maps[type]); nd; nd =rb_next (nd)) { - struct map *pos = rb_entry(nd, struct map, rb_node), *pair; +for (map =maps__first (maps); map; map =map__next (map)) { +struct map */* * If it is the kernel, kallsyms is always "[kernel.kallsyms]", while * the kernel will have the path for the vmlinux file being used,
@@ -193,22 +194,22 @@ detour:* both cases. */ pair =map_groups__find_by_name (&kallsyms.kmaps, type, - (pos->dso->kernel ? - pos->dso->short_name : - pos->dso->name)); + (map->dso->kernel ? + map->dso->short_name : + map->dso->name));if (pair) pair->priv =1 ;else -map__fprintf (pos, stderr); +map__fprintf (map, stderr); }pr_info ("Maps in vmlinux with a different name in kallsyms:\n" ); -for (nd =rb_first (&vmlinux.kmaps.maps[type]); nd; nd =rb_next (nd)) { - struct map *pos = rb_entry(nd, struct map, rb_node), *pair; +for (map =maps__first (maps); map; map =map__next (map)) { +struct map *pair; - mem_start = vmlinux_map->unmap_ip (vmlinux_map, pos->start); - mem_end = vmlinux_map->unmap_ip (vmlinux_map, pos->end); + mem_start = vmlinux_map->unmap_ip (vmlinux_map, map->start); + mem_end = vmlinux_map->unmap_ip (vmlinux_map, map->end); pair =map_groups__find (&kallsyms.kmaps, type, mem_start);if (pair ==NULL || pair->priv)
@@ -217,7 +218,7 @@ detour:if (pair->start == mem_start) { pair->priv =1 ;pr_info (" %" PRIx64"-%" PRIx64" %" PRIx64" %s in kallsyms as" , - pos->start, pos->end, pos->pgoff, pos->dso->name); + map->start, map->end, map->pgoff, map->dso->name);if (mem_end != pair->end)pr_info (":\n*%" PRIx64"-%" PRIx64" %" PRIx64, pair->start, pair->end, pair->pgoff);
@@ -228,12 +229,11 @@ detour:pr_info ("Maps only in kallsyms:\n" ); -for (nd =rb_first (&kallsyms.kmaps.maps[type]); - nd; nd =rb_next (nd)) { - struct map *pos = rb_entry(nd, struct map, rb_node); + maps = &kallsyms.kmaps.maps[type]; -if (!pos->priv) -map__fprintf (pos, stderr); +for (map =maps__first (maps); map; map =map__next (map)) { +if (!map->priv) +map__fprintf (map, stderr); } out:machine__exit (&kallsyms);
tools/perf/util/event.c +3 -4
@@ -329,8 +329,9 @@ int perf_event__synthesize_modules(struct perf_tool *tool, struct machine *machine) {int rc =0 ; -struct rb_node *nd; +struct map *pos;struct map_groups *kmaps = &machine->kmaps; +struct rb_root *maps = &kmaps->maps[MAP__FUNCTION ];union perf_event *event =zalloc ((sizeof (event->mmap) + machine->id_hdr_size));if (event ==NULL ) {
@@ -350,10 +351,8 @@ int perf_event__synthesize_modules(struct perf_tool *tool,else event->header.misc =PERF_RECORD_MISC_GUEST_KERNEL ; -for (nd =rb_first (&kmaps->maps[MAP__FUNCTION ]); - nd; nd =rb_next (nd)) { +for (pos =maps__first (maps); pos; pos =map__next (pos)) {size_t size; - struct map *pos = rb_entry(nd, struct map, rb_node);if (pos->dso->kernel)continue ;
tools/perf/util/map.c +4 -3
@@ -688,9 +688,10 @@ move_map:int map_groups__clone (struct map_groups *mg,struct map_groups *parent,enum map_type type) { -struct rb_node *nd; -for (nd =rb_first (&parent->maps[type]); nd; nd =rb_next (nd)) { - struct map *map = rb_entry(nd, struct map, rb_node); +struct map *map; +struct rb_root *maps = &parent->maps[type]; + +for (map =maps__first (maps); map; map =map__next (map)) {struct map *new =map__clone (map);if (new ==NULL )return -ENOMEM ;
tools/perf/util/probe-event.c +3 -3
@@ -162,8 +162,9 @@ static u64 kernel_get_symbol_address_by_name(const char *name, bool reloc)static struct map *kernel_get_module_map (const char *module) { -struct rb_node *nd;struct map_groups *grp = &host_machine->kmaps; +struct rb_root *maps = &grp->maps[MAP__FUNCTION ]; +struct map *pos;/* A file path -- this is an offline module */ if (module &&strchr (module,'/' ))
@@ -172,8 +173,7 @@ static struct map *kernel_get_module_map(const char *module)if (!module) module ="kernel" ; -for (nd =rb_first (&grp->maps[MAP__FUNCTION ]); nd; nd =rb_next (nd)) { - struct map *pos = rb_entry(nd, struct map, rb_node); +for (pos =maps__first (maps); pos; pos =map__next (pos)) {if (strncmp (pos->dso->short_name +1 , module, pos->dso->short_name_len -2 ) ==0 ) {return pos;
tools/perf/util/symbol.c +10 -13
@@ -202,18 +202,16 @@ void symbols__fixup_end(struct rb_root *symbols)void __map_groups__fixup_end (struct map_groups *mg,enum map_type type) { -struct map *prev, *curr; -struct rb_node *nd, *prevnd =rb_first (&mg->maps[type]); +struct rb_root *maps = &mg->maps[type]; +struct map *next, *curr; -if (prevnd ==NULL ) + curr =maps__first (maps); +if (curr ==NULL )return ; - curr = rb_entry(prevnd, struct map, rb_node); - -for (nd =rb_next (prevnd); nd; nd =rb_next (nd)) { - prev = curr; - curr = rb_entry(nd, struct map, rb_node); - prev->end = curr->start; +for (next =map__next (curr); next; next =map__next (curr)) { + curr->end = next->start; + curr = next; }/*
@@ -1522,11 +1520,10 @@ out:struct map *map_groups__find_by_name (struct map_groups *mg,enum map_type type,const char *name) { -struct rb_node *nd; - -for (nd =rb_first (&mg->maps[type]); nd; nd =rb_next (nd)) { - struct map *map = rb_entry(nd, struct map, rb_node); +struct rb_root *maps = &mg->maps[type]; +struct map *map; +for (map =maps__first (maps); map; map =map__next (map)) {if (map->dso &&strcmp (map->dso->short_name, name) ==0 )return map; }