perf machine: Use machine__kernel_map() thoroughly

In places where we were using its open coded equivalent.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-khkdugcdoqy3tkszm3jdxgbe@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent eb56db54
...@@ -329,7 +329,7 @@ static int build_alloc_func_list(void) ...@@ -329,7 +329,7 @@ static int build_alloc_func_list(void)
return -EINVAL; return -EINVAL;
} }
kernel_map = machine->vmlinux_maps[MAP__FUNCTION]; kernel_map = machine__kernel_map(machine, MAP__FUNCTION)
if (map__load(kernel_map, NULL) < 0) { if (map__load(kernel_map, NULL) < 0) {
pr_err("cannot load kernel map\n"); pr_err("cannot load kernel map\n");
return -ENOENT; return -ENOENT;
......
...@@ -387,7 +387,7 @@ static int perf_evlist__tty_browse_hists(struct perf_evlist *evlist, ...@@ -387,7 +387,7 @@ static int perf_evlist__tty_browse_hists(struct perf_evlist *evlist,
static void report__warn_kptr_restrict(const struct report *rep) static void report__warn_kptr_restrict(const struct report *rep)
{ {
struct map *kernel_map = rep->session->machines.host.vmlinux_maps[MAP__FUNCTION]; struct map *kernel_map = machine__kernel_map(&rep->session->machines.host, MAP__FUNCTION);
struct kmap *kernel_kmap = kernel_map ? map__kmap(kernel_map) : NULL; struct kmap *kernel_kmap = kernel_map ? map__kmap(kernel_map) : NULL;
if (kernel_map == NULL || if (kernel_map == NULL ||
......
...@@ -473,7 +473,7 @@ static int do_test_code_reading(bool try_kcore) ...@@ -473,7 +473,7 @@ static int do_test_code_reading(bool try_kcore)
symbol_conf.kallsyms_name = "/proc/kallsyms"; symbol_conf.kallsyms_name = "/proc/kallsyms";
/* Load kernel map */ /* Load kernel map */
map = machine->vmlinux_maps[MAP__FUNCTION]; map = machine__kernel_map(machine, MAP__FUNCTION);
ret = map__load(map, NULL); ret = map__load(map, NULL);
if (ret < 0) { if (ret < 0) {
pr_debug("map__load failed\n"); pr_debug("map__load failed\n");
......
...@@ -649,12 +649,12 @@ int perf_event__synthesize_kernel_mmap(struct perf_tool *tool, ...@@ -649,12 +649,12 @@ int perf_event__synthesize_kernel_mmap(struct perf_tool *tool,
size_t size; size_t size;
const char *mmap_name; const char *mmap_name;
char name_buff[PATH_MAX]; char name_buff[PATH_MAX];
struct map *map; struct map *map = machine__kernel_map(machine, MAP__FUNCTION);
struct kmap *kmap; struct kmap *kmap;
int err; int err;
union perf_event *event; union perf_event *event;
if (machine->vmlinux_maps[0] == NULL) if (map == NULL)
return -1; return -1;
/* /*
...@@ -680,7 +680,6 @@ int perf_event__synthesize_kernel_mmap(struct perf_tool *tool, ...@@ -680,7 +680,6 @@ int perf_event__synthesize_kernel_mmap(struct perf_tool *tool,
event->header.misc = PERF_RECORD_MISC_GUEST_KERNEL; event->header.misc = PERF_RECORD_MISC_GUEST_KERNEL;
} }
map = machine->vmlinux_maps[MAP__FUNCTION];
kmap = map__kmap(map); kmap = map__kmap(map);
size = snprintf(event->mmap.filename, sizeof(event->mmap.filename), size = snprintf(event->mmap.filename, sizeof(event->mmap.filename),
"%s%s", mmap_name, kmap->ref_reloc_sym->name) + 1; "%s%s", mmap_name, kmap->ref_reloc_sym->name) + 1;
...@@ -1008,7 +1007,7 @@ int perf_event__preprocess_sample(const union perf_event *event, ...@@ -1008,7 +1007,7 @@ int perf_event__preprocess_sample(const union perf_event *event,
* it now. * it now.
*/ */
if (cpumode == PERF_RECORD_MISC_KERNEL && if (cpumode == PERF_RECORD_MISC_KERNEL &&
machine->vmlinux_maps[MAP__FUNCTION] == NULL) machine__kernel_map(machine, MAP__FUNCTION) == NULL)
machine__create_kernel_maps(machine); machine__create_kernel_maps(machine);
thread__find_addr_map(thread, cpumode, MAP__FUNCTION, sample->ip, al); thread__find_addr_map(thread, cpumode, MAP__FUNCTION, sample->ip, al);
......
...@@ -625,7 +625,7 @@ size_t machine__fprintf_vmlinux_path(struct machine *machine, FILE *fp) ...@@ -625,7 +625,7 @@ size_t machine__fprintf_vmlinux_path(struct machine *machine, FILE *fp)
{ {
int i; int i;
size_t printed = 0; size_t printed = 0;
struct dso *kdso = machine->vmlinux_maps[MAP__FUNCTION]->dso; struct dso *kdso = machine__kernel_map(machine, MAP__FUNCTION)->dso;
if (kdso->has_build_id) { if (kdso->has_build_id) {
char filename[PATH_MAX]; char filename[PATH_MAX];
...@@ -741,6 +741,7 @@ int __machine__create_kernel_maps(struct machine *machine, struct dso *kernel) ...@@ -741,6 +741,7 @@ int __machine__create_kernel_maps(struct machine *machine, struct dso *kernel)
for (type = 0; type < MAP__NR_TYPES; ++type) { for (type = 0; type < MAP__NR_TYPES; ++type) {
struct kmap *kmap; struct kmap *kmap;
struct map *map;
machine->vmlinux_maps[type] = map__new2(start, kernel, type); machine->vmlinux_maps[type] = map__new2(start, kernel, type);
if (machine->vmlinux_maps[type] == NULL) if (machine->vmlinux_maps[type] == NULL)
...@@ -749,13 +750,13 @@ int __machine__create_kernel_maps(struct machine *machine, struct dso *kernel) ...@@ -749,13 +750,13 @@ int __machine__create_kernel_maps(struct machine *machine, struct dso *kernel)
machine->vmlinux_maps[type]->map_ip = machine->vmlinux_maps[type]->map_ip =
machine->vmlinux_maps[type]->unmap_ip = machine->vmlinux_maps[type]->unmap_ip =
identity__map_ip; identity__map_ip;
kmap = map__kmap(machine->vmlinux_maps[type]); map = machine__kernel_map(machine, type);
kmap = map__kmap(map);
if (!kmap) if (!kmap)
return -1; return -1;
kmap->kmaps = &machine->kmaps; kmap->kmaps = &machine->kmaps;
map_groups__insert(&machine->kmaps, map_groups__insert(&machine->kmaps, map);
machine->vmlinux_maps[type]);
} }
return 0; return 0;
...@@ -767,13 +768,13 @@ void machine__destroy_kernel_maps(struct machine *machine) ...@@ -767,13 +768,13 @@ void machine__destroy_kernel_maps(struct machine *machine)
for (type = 0; type < MAP__NR_TYPES; ++type) { for (type = 0; type < MAP__NR_TYPES; ++type) {
struct kmap *kmap; struct kmap *kmap;
struct map *map = machine__kernel_map(machine, type);
if (machine->vmlinux_maps[type] == NULL) if (map == NULL)
continue; continue;
kmap = map__kmap(machine->vmlinux_maps[type]); kmap = map__kmap(map);
map_groups__remove(&machine->kmaps, map_groups__remove(&machine->kmaps, map);
machine->vmlinux_maps[type]);
if (kmap && kmap->ref_reloc_sym) { if (kmap && kmap->ref_reloc_sym) {
/* /*
* ref_reloc_sym is shared among all maps, so free just * ref_reloc_sym is shared among all maps, so free just
...@@ -867,7 +868,7 @@ int machines__create_kernel_maps(struct machines *machines, pid_t pid) ...@@ -867,7 +868,7 @@ int machines__create_kernel_maps(struct machines *machines, pid_t pid)
int machine__load_kallsyms(struct machine *machine, const char *filename, int machine__load_kallsyms(struct machine *machine, const char *filename,
enum map_type type, symbol_filter_t filter) enum map_type type, symbol_filter_t filter)
{ {
struct map *map = machine->vmlinux_maps[type]; struct map *map = machine__kernel_map(machine, MAP__FUNCTION);
int ret = dso__load_kallsyms(map->dso, filename, map, filter); int ret = dso__load_kallsyms(map->dso, filename, map, filter);
if (ret > 0) { if (ret > 0) {
...@@ -886,7 +887,7 @@ int machine__load_kallsyms(struct machine *machine, const char *filename, ...@@ -886,7 +887,7 @@ int machine__load_kallsyms(struct machine *machine, const char *filename,
int machine__load_vmlinux_path(struct machine *machine, enum map_type type, int machine__load_vmlinux_path(struct machine *machine, enum map_type type,
symbol_filter_t filter) symbol_filter_t filter)
{ {
struct map *map = machine->vmlinux_maps[type]; struct map *map = machine__kernel_map(machine, MAP__FUNCTION);
int ret = dso__load_vmlinux_path(map->dso, map, filter); int ret = dso__load_vmlinux_path(map->dso, map, filter);
if (ret > 0) if (ret > 0)
...@@ -1244,7 +1245,7 @@ static int machine__process_kernel_mmap_event(struct machine *machine, ...@@ -1244,7 +1245,7 @@ static int machine__process_kernel_mmap_event(struct machine *machine,
/* /*
* preload dso of guest kernel and modules * preload dso of guest kernel and modules
*/ */
dso__load(kernel, machine->vmlinux_maps[MAP__FUNCTION], dso__load(kernel, machine__kernel_map(machine, MAP__FUNCTION),
NULL); NULL);
} }
} }
......
...@@ -235,7 +235,7 @@ struct map *map__new2(u64 start, struct dso *dso, enum map_type type) ...@@ -235,7 +235,7 @@ struct map *map__new2(u64 start, struct dso *dso, enum map_type type)
*/ */
bool __map__is_kernel(const struct map *map) bool __map__is_kernel(const struct map *map)
{ {
return map->groups->machine->vmlinux_maps[map->type] == map; return machine__kernel_map(map->groups->machine, map->type) == map;
} }
static void map__exit(struct map *map) static void map__exit(struct map *map)
......
...@@ -126,11 +126,12 @@ static struct ref_reloc_sym *kernel_get_ref_reloc_sym(void) ...@@ -126,11 +126,12 @@ static struct ref_reloc_sym *kernel_get_ref_reloc_sym(void)
{ {
/* kmap->ref_reloc_sym should be set if host_machine is initialized */ /* kmap->ref_reloc_sym should be set if host_machine is initialized */
struct kmap *kmap; struct kmap *kmap;
struct map *map = machine__kernel_map(host_machine, MAP__FUNCTION);
if (map__load(host_machine->vmlinux_maps[MAP__FUNCTION], NULL) < 0) if (map__load(map, NULL) < 0)
return NULL; return NULL;
kmap = map__kmap(host_machine->vmlinux_maps[MAP__FUNCTION]); kmap = map__kmap(map);
if (!kmap) if (!kmap)
return NULL; return NULL;
return kmap->ref_reloc_sym; return kmap->ref_reloc_sym;
...@@ -281,7 +282,7 @@ static int kernel_get_module_dso(const char *module, struct dso **pdso) ...@@ -281,7 +282,7 @@ static int kernel_get_module_dso(const char *module, struct dso **pdso)
return -ENOENT; return -ENOENT;
} }
map = host_machine->vmlinux_maps[MAP__FUNCTION]; map = machine__kernel_map(host_machine, MAP__FUNCTION);
dso = map->dso; dso = map->dso;
vmlinux_name = symbol_conf.vmlinux_name; vmlinux_name = symbol_conf.vmlinux_name;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment