perf machine: Introduce machine__kernel_maps()
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 68a741868a0612408a46fda4c06663315d40c544 Gitweb: https://git.kernel.org/tip/68a741868a0612408a46fda4c06663315d40c544 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Tue, 24 Apr 2018 17:06:25 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Thu, 26 Apr 2018 13:47:10 -0300
perf machine: Introduce machine__kernel_maps()
That returns the a data structure contained the ordered list of kernel modules + the main kernel maps, one more step in removing the MAP__{FUNCTION,VARIABLE} split.
Cc Adrian Hunter <[email protected]>
Cc David Ahern <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Wang Nan <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/tests/vmlinux-kallsyms.c | 4 ++-- tools/perf/util/event.c | 3 +-- tools/perf/util/machine.h | 12 ++++++++++++ tools/perf/util/probe-event.c | 3 +-- 4 files changed, 16 insertions(+), 6 deletions(-)
tools/perf/tests/vmlinux-kallsyms.c +2 -2
@@ -20,7 +20,7 @@ int test__vmlinux_matches_kallsyms(struct test *test __maybe_unused, int subteststruct map *kallsyms_map, *vmlinux_map, *map;struct machine kallsyms, vmlinux;enum map_type type =MAP__FUNCTION ; -struct maps *maps = &vmlinux.kmaps.maps[type]; +struct maps *maps =machine__kernel_maps (&vmlinux);u64 mem_start, mem_end;bool header_printed;
@@ -228,7 +228,7 @@ next_pair: header_printed = false; - maps = &kallsyms.kmaps.maps[type]; + maps =machine__kernel_maps (&kallsyms);for (map =maps__first (maps); map; map =map__next (map)) {if (!map->priv) {
tools/perf/util/event.c +1 -2
@@ -464,8 +464,7 @@ int perf_event__synthesize_modules(struct perf_tool *tool, {int rc =0 ;struct map *pos; -struct map_groups *kmaps = &machine->kmaps; -struct maps *maps = &kmaps->maps[MAP__FUNCTION ]; +struct maps *maps =machine__kernel_maps (machine);union perf_event *event =zalloc ((sizeof (event->mmap) + machine->id_hdr_size));if (event ==NULL ) {
tools/perf/util/machine.h +12 -0
@@ -70,12 +70,24 @@ struct map *__machine__kernel_map(struct machine *machine, enum map_type type)return machine->vmlinux_maps[type]; } +/* +* The main kernel (vmlinux) map +*/ static inline struct map *machine__kernel_map (struct machine *machine) {return __machine__kernel_map (machine,MAP__FUNCTION ); } +/* +* kernel (the one returned by machine__kernel_map()) plus kernel modules maps +*/ +static inline +struct maps *machine__kernel_maps (struct machine *machine) +{ +return &machine->kmaps.maps[MAP__FUNCTION ]; +} +int machine__get_kernel_start (struct machine *machine);static inline u64 machine__kernel_start (struct machine *machine)
tools/perf/util/probe-event.c +1 -2
@@ -161,8 +161,7 @@ static int kernel_get_symbol_address_by_name(const char *name, u64 *addr,static struct map *kernel_get_module_map (const char *module) { -struct map_groups *grp = &host_machine->kmaps; -struct maps *maps = &grp->maps[MAP__FUNCTION ]; +struct maps *maps =machine__kernel_maps (host_machine);struct map *pos;/* A file path -- this is an offline module */