perf machine: Add method for common kernel_map(FUNCTION) operation
And it is also a step in the direction of killing the separation of data and text maps in map_groups. 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-rrds86kb3wx5wk8v38v56gw8@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
77e6597749
commit
a5e813c686
|
@ -329,7 +329,7 @@ static int build_alloc_func_list(void)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
kernel_map = machine__kernel_map(machine, MAP__FUNCTION)
|
||||
kernel_map = machine__kernel_map(machine);
|
||||
if (map__load(kernel_map, NULL) < 0) {
|
||||
pr_err("cannot load kernel map\n");
|
||||
return -ENOENT;
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
struct map *kernel_map = machine__kernel_map(&rep->session->machines.host, MAP__FUNCTION);
|
||||
struct map *kernel_map = machine__kernel_map(&rep->session->machines.host);
|
||||
struct kmap *kernel_kmap = kernel_map ? map__kmap(kernel_map) : NULL;
|
||||
|
||||
if (kernel_map == NULL ||
|
||||
|
|
|
@ -473,7 +473,7 @@ static int do_test_code_reading(bool try_kcore)
|
|||
symbol_conf.kallsyms_name = "/proc/kallsyms";
|
||||
|
||||
/* Load kernel map */
|
||||
map = machine__kernel_map(machine, MAP__FUNCTION);
|
||||
map = machine__kernel_map(machine);
|
||||
ret = map__load(map, NULL);
|
||||
if (ret < 0) {
|
||||
pr_debug("map__load failed\n");
|
||||
|
|
|
@ -68,7 +68,7 @@ int test__vmlinux_matches_kallsyms(void)
|
|||
* to see if the running kernel was relocated by checking if it has the
|
||||
* same value in the vmlinux file we load.
|
||||
*/
|
||||
kallsyms_map = machine__kernel_map(&kallsyms, type);
|
||||
kallsyms_map = machine__kernel_map(&kallsyms);
|
||||
|
||||
/*
|
||||
* Step 5:
|
||||
|
@ -80,7 +80,7 @@ int test__vmlinux_matches_kallsyms(void)
|
|||
goto out;
|
||||
}
|
||||
|
||||
vmlinux_map = machine__kernel_map(&vmlinux, type);
|
||||
vmlinux_map = machine__kernel_map(&vmlinux);
|
||||
|
||||
/*
|
||||
* Step 6:
|
||||
|
|
|
@ -649,7 +649,7 @@ int perf_event__synthesize_kernel_mmap(struct perf_tool *tool,
|
|||
size_t size;
|
||||
const char *mmap_name;
|
||||
char name_buff[PATH_MAX];
|
||||
struct map *map = machine__kernel_map(machine, MAP__FUNCTION);
|
||||
struct map *map = machine__kernel_map(machine);
|
||||
struct kmap *kmap;
|
||||
int err;
|
||||
union perf_event *event;
|
||||
|
@ -1007,7 +1007,7 @@ int perf_event__preprocess_sample(const union perf_event *event,
|
|||
* it now.
|
||||
*/
|
||||
if (cpumode == PERF_RECORD_MISC_KERNEL &&
|
||||
machine__kernel_map(machine, MAP__FUNCTION) == NULL)
|
||||
machine__kernel_map(machine) == NULL)
|
||||
machine__create_kernel_maps(machine);
|
||||
|
||||
thread__find_addr_map(thread, cpumode, MAP__FUNCTION, sample->ip, al);
|
||||
|
|
|
@ -1268,7 +1268,7 @@ static u64 intel_pt_switch_ip(struct intel_pt *pt, u64 *ptss_ip)
|
|||
if (ptss_ip)
|
||||
*ptss_ip = 0;
|
||||
|
||||
map = machine__kernel_map(machine, MAP__FUNCTION);
|
||||
map = machine__kernel_map(machine);
|
||||
if (!map)
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -625,7 +625,7 @@ size_t machine__fprintf_vmlinux_path(struct machine *machine, FILE *fp)
|
|||
{
|
||||
int i;
|
||||
size_t printed = 0;
|
||||
struct dso *kdso = machine__kernel_map(machine, MAP__FUNCTION)->dso;
|
||||
struct dso *kdso = machine__kernel_map(machine)->dso;
|
||||
|
||||
if (kdso->has_build_id) {
|
||||
char filename[PATH_MAX];
|
||||
|
@ -750,7 +750,7 @@ int __machine__create_kernel_maps(struct machine *machine, struct dso *kernel)
|
|||
machine->vmlinux_maps[type]->map_ip =
|
||||
machine->vmlinux_maps[type]->unmap_ip =
|
||||
identity__map_ip;
|
||||
map = machine__kernel_map(machine, type);
|
||||
map = __machine__kernel_map(machine, type);
|
||||
kmap = map__kmap(map);
|
||||
if (!kmap)
|
||||
return -1;
|
||||
|
@ -768,7 +768,7 @@ void machine__destroy_kernel_maps(struct machine *machine)
|
|||
|
||||
for (type = 0; type < MAP__NR_TYPES; ++type) {
|
||||
struct kmap *kmap;
|
||||
struct map *map = machine__kernel_map(machine, type);
|
||||
struct map *map = __machine__kernel_map(machine, type);
|
||||
|
||||
if (map == NULL)
|
||||
continue;
|
||||
|
@ -868,7 +868,7 @@ int machines__create_kernel_maps(struct machines *machines, pid_t pid)
|
|||
int machine__load_kallsyms(struct machine *machine, const char *filename,
|
||||
enum map_type type, symbol_filter_t filter)
|
||||
{
|
||||
struct map *map = machine__kernel_map(machine, MAP__FUNCTION);
|
||||
struct map *map = machine__kernel_map(machine);
|
||||
int ret = dso__load_kallsyms(map->dso, filename, map, filter);
|
||||
|
||||
if (ret > 0) {
|
||||
|
@ -887,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,
|
||||
symbol_filter_t filter)
|
||||
{
|
||||
struct map *map = machine__kernel_map(machine, MAP__FUNCTION);
|
||||
struct map *map = machine__kernel_map(machine);
|
||||
int ret = dso__load_vmlinux_path(map->dso, map, filter);
|
||||
|
||||
if (ret > 0)
|
||||
|
@ -1245,8 +1245,7 @@ static int machine__process_kernel_mmap_event(struct machine *machine,
|
|||
/*
|
||||
* preload dso of guest kernel and modules
|
||||
*/
|
||||
dso__load(kernel, machine__kernel_map(machine, MAP__FUNCTION),
|
||||
NULL);
|
||||
dso__load(kernel, machine__kernel_map(machine), NULL);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
@ -1998,7 +1997,7 @@ int machine__set_current_tid(struct machine *machine, int cpu, pid_t pid,
|
|||
|
||||
int machine__get_kernel_start(struct machine *machine)
|
||||
{
|
||||
struct map *map = machine__kernel_map(machine, MAP__FUNCTION);
|
||||
struct map *map = machine__kernel_map(machine);
|
||||
int err = 0;
|
||||
|
||||
/*
|
||||
|
|
|
@ -48,11 +48,17 @@ struct machine {
|
|||
};
|
||||
|
||||
static inline
|
||||
struct map *machine__kernel_map(struct machine *machine, enum map_type type)
|
||||
struct map *__machine__kernel_map(struct machine *machine, enum map_type type)
|
||||
{
|
||||
return machine->vmlinux_maps[type];
|
||||
}
|
||||
|
||||
static inline
|
||||
struct map *machine__kernel_map(struct machine *machine)
|
||||
{
|
||||
return __machine__kernel_map(machine, MAP__FUNCTION);
|
||||
}
|
||||
|
||||
int machine__get_kernel_start(struct machine *machine);
|
||||
|
||||
static inline u64 machine__kernel_start(struct machine *machine)
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
return machine__kernel_map(map->groups->machine, map->type) == map;
|
||||
return __machine__kernel_map(map->groups->machine, map->type) == map;
|
||||
}
|
||||
|
||||
static void map__exit(struct map *map)
|
||||
|
|
|
@ -126,7 +126,7 @@ static struct ref_reloc_sym *kernel_get_ref_reloc_sym(void)
|
|||
{
|
||||
/* kmap->ref_reloc_sym should be set if host_machine is initialized */
|
||||
struct kmap *kmap;
|
||||
struct map *map = machine__kernel_map(host_machine, MAP__FUNCTION);
|
||||
struct map *map = machine__kernel_map(host_machine);
|
||||
|
||||
if (map__load(map, NULL) < 0)
|
||||
return NULL;
|
||||
|
@ -282,7 +282,7 @@ static int kernel_get_module_dso(const char *module, struct dso **pdso)
|
|||
return -ENOENT;
|
||||
}
|
||||
|
||||
map = machine__kernel_map(host_machine, MAP__FUNCTION);
|
||||
map = machine__kernel_map(host_machine);
|
||||
dso = map->dso;
|
||||
|
||||
vmlinux_name = symbol_conf.vmlinux_name;
|
||||
|
|
Loading…
Reference in a new issue