perf maps: Rename 'mg' variables to 'maps'

Continuing the merge of 'struct maps' with 'struct map_groups'.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lkml.kernel.org/n/tip-z8d14wrw393a0fbvmnk1bqd9@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent f2eaea09
...@@ -35,7 +35,7 @@ static int check_maps(struct map_def *merged, unsigned int size, struct maps *ma ...@@ -35,7 +35,7 @@ static int check_maps(struct map_def *merged, unsigned int size, struct maps *ma
int test__map_groups__merge_in(struct test *t __maybe_unused, int subtest __maybe_unused) int test__map_groups__merge_in(struct test *t __maybe_unused, int subtest __maybe_unused)
{ {
struct maps mg; struct maps maps;
unsigned int i; unsigned int i;
struct map_def bpf_progs[] = { struct map_def bpf_progs[] = {
{ "bpf_prog_1", 200, 300 }, { "bpf_prog_1", 200, 300 },
...@@ -64,7 +64,7 @@ int test__map_groups__merge_in(struct test *t __maybe_unused, int subtest __mayb ...@@ -64,7 +64,7 @@ int test__map_groups__merge_in(struct test *t __maybe_unused, int subtest __mayb
struct map *map_kcore1, *map_kcore2, *map_kcore3; struct map *map_kcore1, *map_kcore2, *map_kcore3;
int ret; int ret;
maps__init(&mg, NULL); maps__init(&maps, NULL);
for (i = 0; i < ARRAY_SIZE(bpf_progs); i++) { for (i = 0; i < ARRAY_SIZE(bpf_progs); i++) {
struct map *map; struct map *map;
...@@ -74,7 +74,7 @@ int test__map_groups__merge_in(struct test *t __maybe_unused, int subtest __mayb ...@@ -74,7 +74,7 @@ int test__map_groups__merge_in(struct test *t __maybe_unused, int subtest __mayb
map->start = bpf_progs[i].start; map->start = bpf_progs[i].start;
map->end = bpf_progs[i].end; map->end = bpf_progs[i].end;
maps__insert(&mg, map); maps__insert(&maps, map);
map__put(map); map__put(map);
} }
...@@ -99,22 +99,22 @@ int test__map_groups__merge_in(struct test *t __maybe_unused, int subtest __mayb ...@@ -99,22 +99,22 @@ int test__map_groups__merge_in(struct test *t __maybe_unused, int subtest __mayb
map_kcore3->start = 880; map_kcore3->start = 880;
map_kcore3->end = 1100; map_kcore3->end = 1100;
ret = maps__merge_in(&mg, map_kcore1); ret = maps__merge_in(&maps, map_kcore1);
TEST_ASSERT_VAL("failed to merge map", !ret); TEST_ASSERT_VAL("failed to merge map", !ret);
ret = check_maps(merged12, ARRAY_SIZE(merged12), &mg); ret = check_maps(merged12, ARRAY_SIZE(merged12), &maps);
TEST_ASSERT_VAL("merge check failed", !ret); TEST_ASSERT_VAL("merge check failed", !ret);
ret = maps__merge_in(&mg, map_kcore2); ret = maps__merge_in(&maps, map_kcore2);
TEST_ASSERT_VAL("failed to merge map", !ret); TEST_ASSERT_VAL("failed to merge map", !ret);
ret = check_maps(merged12, ARRAY_SIZE(merged12), &mg); ret = check_maps(merged12, ARRAY_SIZE(merged12), &maps);
TEST_ASSERT_VAL("merge check failed", !ret); TEST_ASSERT_VAL("merge check failed", !ret);
ret = maps__merge_in(&mg, map_kcore3); ret = maps__merge_in(&maps, map_kcore3);
TEST_ASSERT_VAL("failed to merge map", !ret); TEST_ASSERT_VAL("failed to merge map", !ret);
ret = check_maps(merged3, ARRAY_SIZE(merged3), &mg); ret = check_maps(merged3, ARRAY_SIZE(merged3), &maps);
TEST_ASSERT_VAL("merge check failed", !ret); TEST_ASSERT_VAL("merge check failed", !ret);
return TEST_OK; return TEST_OK;
} }
...@@ -12,7 +12,7 @@ int test__thread_mg_share(struct test *test __maybe_unused, int subtest __maybe_ ...@@ -12,7 +12,7 @@ int test__thread_mg_share(struct test *test __maybe_unused, int subtest __maybe_
/* thread group */ /* thread group */
struct thread *leader; struct thread *leader;
struct thread *t1, *t2, *t3; struct thread *t1, *t2, *t3;
struct maps *mg; struct maps *maps;
/* other process */ /* other process */
struct thread *other, *other_leader; struct thread *other, *other_leader;
...@@ -42,13 +42,13 @@ int test__thread_mg_share(struct test *test __maybe_unused, int subtest __maybe_ ...@@ -42,13 +42,13 @@ int test__thread_mg_share(struct test *test __maybe_unused, int subtest __maybe_
TEST_ASSERT_VAL("failed to create threads", TEST_ASSERT_VAL("failed to create threads",
leader && t1 && t2 && t3 && other); leader && t1 && t2 && t3 && other);
mg = leader->maps; maps = leader->maps;
TEST_ASSERT_EQUAL("wrong refcnt", refcount_read(&mg->refcnt), 4); TEST_ASSERT_EQUAL("wrong refcnt", refcount_read(&maps->refcnt), 4);
/* test the map groups pointer is shared */ /* test the map groups pointer is shared */
TEST_ASSERT_VAL("map groups don't match", mg == t1->maps); TEST_ASSERT_VAL("map groups don't match", maps == t1->maps);
TEST_ASSERT_VAL("map groups don't match", mg == t2->maps); TEST_ASSERT_VAL("map groups don't match", maps == t2->maps);
TEST_ASSERT_VAL("map groups don't match", mg == t3->maps); TEST_ASSERT_VAL("map groups don't match", maps == t3->maps);
/* /*
* Verify the other leader was created by previous call. * Verify the other leader was created by previous call.
...@@ -77,13 +77,13 @@ int test__thread_mg_share(struct test *test __maybe_unused, int subtest __maybe_ ...@@ -77,13 +77,13 @@ int test__thread_mg_share(struct test *test __maybe_unused, int subtest __maybe_
/* release thread group */ /* release thread group */
thread__put(leader); thread__put(leader);
TEST_ASSERT_EQUAL("wrong refcnt", refcount_read(&mg->refcnt), 3); TEST_ASSERT_EQUAL("wrong refcnt", refcount_read(&maps->refcnt), 3);
thread__put(t1); thread__put(t1);
TEST_ASSERT_EQUAL("wrong refcnt", refcount_read(&mg->refcnt), 2); TEST_ASSERT_EQUAL("wrong refcnt", refcount_read(&maps->refcnt), 2);
thread__put(t2); thread__put(t2);
TEST_ASSERT_EQUAL("wrong refcnt", refcount_read(&mg->refcnt), 1); TEST_ASSERT_EQUAL("wrong refcnt", refcount_read(&maps->refcnt), 1);
thread__put(t3); thread__put(t3);
......
...@@ -457,11 +457,11 @@ int perf_event__process(struct perf_tool *tool __maybe_unused, ...@@ -457,11 +457,11 @@ int perf_event__process(struct perf_tool *tool __maybe_unused,
struct map *thread__find_map(struct thread *thread, u8 cpumode, u64 addr, struct map *thread__find_map(struct thread *thread, u8 cpumode, u64 addr,
struct addr_location *al) struct addr_location *al)
{ {
struct maps *mg = thread->maps; struct maps *maps = thread->maps;
struct machine *machine = mg->machine; struct machine *machine = maps->machine;
bool load_map = false; bool load_map = false;
al->maps = mg; al->maps = maps;
al->thread = thread; al->thread = thread;
al->addr = addr; al->addr = addr;
al->cpumode = cpumode; al->cpumode = cpumode;
...@@ -474,13 +474,13 @@ struct map *thread__find_map(struct thread *thread, u8 cpumode, u64 addr, ...@@ -474,13 +474,13 @@ struct map *thread__find_map(struct thread *thread, u8 cpumode, u64 addr,
if (cpumode == PERF_RECORD_MISC_KERNEL && perf_host) { if (cpumode == PERF_RECORD_MISC_KERNEL && perf_host) {
al->level = 'k'; al->level = 'k';
al->maps = mg = &machine->kmaps; al->maps = maps = &machine->kmaps;
load_map = true; load_map = true;
} else if (cpumode == PERF_RECORD_MISC_USER && perf_host) { } else if (cpumode == PERF_RECORD_MISC_USER && perf_host) {
al->level = '.'; al->level = '.';
} else if (cpumode == PERF_RECORD_MISC_GUEST_KERNEL && perf_guest) { } else if (cpumode == PERF_RECORD_MISC_GUEST_KERNEL && perf_guest) {
al->level = 'g'; al->level = 'g';
al->maps = mg = &machine->kmaps; al->maps = maps = &machine->kmaps;
load_map = true; load_map = true;
} else if (cpumode == PERF_RECORD_MISC_GUEST_USER && perf_guest) { } else if (cpumode == PERF_RECORD_MISC_GUEST_USER && perf_guest) {
al->level = 'u'; al->level = 'u';
...@@ -500,7 +500,7 @@ struct map *thread__find_map(struct thread *thread, u8 cpumode, u64 addr, ...@@ -500,7 +500,7 @@ struct map *thread__find_map(struct thread *thread, u8 cpumode, u64 addr,
return NULL; return NULL;
} }
al->map = maps__find(mg, al->addr); al->map = maps__find(maps, al->addr);
if (al->map != NULL) { if (al->map != NULL) {
/* /*
* Kernel maps might be changed when loading symbols so loading * Kernel maps might be changed when loading symbols so loading
......
...@@ -1259,10 +1259,10 @@ static bool is_kmod_dso(struct dso *dso) ...@@ -1259,10 +1259,10 @@ static bool is_kmod_dso(struct dso *dso)
dso->symtab_type == DSO_BINARY_TYPE__GUEST_KMODULE; dso->symtab_type == DSO_BINARY_TYPE__GUEST_KMODULE;
} }
static int maps__set_module_path(struct maps *mg, const char *path, struct kmod_path *m) static int maps__set_module_path(struct maps *maps, const char *path, struct kmod_path *m)
{ {
char *long_name; char *long_name;
struct map *map = maps__find_by_name(mg, m->name); struct map *map = maps__find_by_name(maps, m->name);
if (map == NULL) if (map == NULL)
return 0; return 0;
...@@ -1286,7 +1286,7 @@ static int maps__set_module_path(struct maps *mg, const char *path, struct kmod_ ...@@ -1286,7 +1286,7 @@ static int maps__set_module_path(struct maps *mg, const char *path, struct kmod_
return 0; return 0;
} }
static int maps__set_modules_path_dir(struct maps *mg, const char *dir_name, int depth) static int maps__set_modules_path_dir(struct maps *maps, const char *dir_name, int depth)
{ {
struct dirent *dent; struct dirent *dent;
DIR *dir = opendir(dir_name); DIR *dir = opendir(dir_name);
...@@ -1318,7 +1318,7 @@ static int maps__set_modules_path_dir(struct maps *mg, const char *dir_name, int ...@@ -1318,7 +1318,7 @@ static int maps__set_modules_path_dir(struct maps *mg, const char *dir_name, int
continue; continue;
} }
ret = maps__set_modules_path_dir(mg, path, depth + 1); ret = maps__set_modules_path_dir(maps, path, depth + 1);
if (ret < 0) if (ret < 0)
goto out; goto out;
} else { } else {
...@@ -1329,7 +1329,7 @@ static int maps__set_modules_path_dir(struct maps *mg, const char *dir_name, int ...@@ -1329,7 +1329,7 @@ static int maps__set_modules_path_dir(struct maps *mg, const char *dir_name, int
goto out; goto out;
if (m.kmod) if (m.kmod)
ret = maps__set_module_path(mg, path, &m); ret = maps__set_module_path(maps, path, &m);
zfree(&m.name); zfree(&m.name);
......
...@@ -512,52 +512,50 @@ u64 map__objdump_2mem(struct map *map, u64 ip) ...@@ -512,52 +512,50 @@ u64 map__objdump_2mem(struct map *map, u64 ip)
return ip + map->reloc; return ip + map->reloc;
} }
void maps__init(struct maps *mg, struct machine *machine) void maps__init(struct maps *maps, struct machine *machine)
{ {
mg->entries = RB_ROOT; maps->entries = RB_ROOT;
init_rwsem(&mg->lock); init_rwsem(&maps->lock);
mg->machine = machine; maps->machine = machine;
mg->last_search_by_name = NULL; maps->last_search_by_name = NULL;
mg->nr_maps = 0; maps->nr_maps = 0;
mg->maps_by_name = NULL; maps->maps_by_name = NULL;
refcount_set(&mg->refcnt, 1); refcount_set(&maps->refcnt, 1);
} }
static void __maps__free_maps_by_name(struct maps *mg) static void __maps__free_maps_by_name(struct maps *maps)
{ {
/* /*
* Free everything to try to do it from the rbtree in the next search * Free everything to try to do it from the rbtree in the next search
*/ */
zfree(&mg->maps_by_name); zfree(&maps->maps_by_name);
mg->nr_maps_allocated = 0; maps->nr_maps_allocated = 0;
} }
void maps__insert(struct maps *mg, struct map *map) void maps__insert(struct maps *maps, struct map *map)
{ {
struct maps *maps = mg;
down_write(&maps->lock); down_write(&maps->lock);
__maps__insert(maps, map); __maps__insert(maps, map);
++mg->nr_maps; ++maps->nr_maps;
/* /*
* If we already performed some search by name, then we need to add the just * If we already performed some search by name, then we need to add the just
* inserted map and resort. * inserted map and resort.
*/ */
if (mg->maps_by_name) { if (maps->maps_by_name) {
if (mg->nr_maps > mg->nr_maps_allocated) { if (maps->nr_maps > maps->nr_maps_allocated) {
int nr_allocate = mg->nr_maps * 2; int nr_allocate = maps->nr_maps * 2;
struct map **maps_by_name = realloc(mg->maps_by_name, nr_allocate * sizeof(map)); struct map **maps_by_name = realloc(maps->maps_by_name, nr_allocate * sizeof(map));
if (maps_by_name == NULL) { if (maps_by_name == NULL) {
__maps__free_maps_by_name(maps); __maps__free_maps_by_name(maps);
return; return;
} }
mg->maps_by_name = maps_by_name; maps->maps_by_name = maps_by_name;
mg->nr_maps_allocated = nr_allocate; maps->nr_maps_allocated = nr_allocate;
} }
mg->maps_by_name[mg->nr_maps - 1] = map; maps->maps_by_name[maps->nr_maps - 1] = map;
__maps__sort_by_name(maps); __maps__sort_by_name(maps);
} }
up_write(&maps->lock); up_write(&maps->lock);
...@@ -569,16 +567,15 @@ static void __maps__remove(struct maps *maps, struct map *map) ...@@ -569,16 +567,15 @@ static void __maps__remove(struct maps *maps, struct map *map)
map__put(map); map__put(map);
} }
void maps__remove(struct maps *mg, struct map *map) void maps__remove(struct maps *maps, struct map *map)
{ {
struct maps *maps = mg;
down_write(&maps->lock); down_write(&maps->lock);
if (mg->last_search_by_name == map) if (maps->last_search_by_name == map)
mg->last_search_by_name = NULL; maps->last_search_by_name = NULL;
__maps__remove(maps, map); __maps__remove(maps, map);
--mg->nr_maps; --maps->nr_maps;
if (mg->maps_by_name) if (maps->maps_by_name)
__maps__free_maps_by_name(maps); __maps__free_maps_by_name(maps);
up_write(&maps->lock); up_write(&maps->lock);
} }
...@@ -607,30 +604,30 @@ bool maps__empty(struct maps *maps) ...@@ -607,30 +604,30 @@ bool maps__empty(struct maps *maps)
struct maps *maps__new(struct machine *machine) struct maps *maps__new(struct machine *machine)
{ {
struct maps *mg = zalloc(sizeof(*mg)), *maps = mg; struct maps *maps = zalloc(sizeof(*maps));
if (mg != NULL) if (maps != NULL)
maps__init(maps, machine); maps__init(maps, machine);
return mg; return maps;
} }
void maps__delete(struct maps *mg) void maps__delete(struct maps *maps)
{ {
maps__exit(mg); maps__exit(maps);
unwind__finish_access(mg); unwind__finish_access(maps);
free(mg); free(maps);
} }
void maps__put(struct maps *mg) void maps__put(struct maps *maps)
{ {
if (mg && refcount_dec_and_test(&mg->refcnt)) if (maps && refcount_dec_and_test(&maps->refcnt))
maps__delete(mg); maps__delete(maps);
} }
struct symbol *maps__find_symbol(struct maps *mg, u64 addr, struct map **mapp) struct symbol *maps__find_symbol(struct maps *maps, u64 addr, struct map **mapp)
{ {
struct map *map = maps__find(mg, addr); struct map *map = maps__find(maps, addr);
/* Ensure map is loaded before using map->map_ip */ /* Ensure map is loaded before using map->map_ip */
if (map != NULL && map__load(map) >= 0) { if (map != NULL && map__load(map) >= 0) {
...@@ -676,12 +673,12 @@ struct symbol *maps__find_symbol_by_name(struct maps *maps, const char *name, st ...@@ -676,12 +673,12 @@ struct symbol *maps__find_symbol_by_name(struct maps *maps, const char *name, st
return sym; return sym;
} }
int maps__find_ams(struct maps *mg, struct addr_map_symbol *ams) int maps__find_ams(struct maps *maps, struct addr_map_symbol *ams)
{ {
if (ams->addr < ams->ms.map->start || ams->addr >= ams->ms.map->end) { if (ams->addr < ams->ms.map->start || ams->addr >= ams->ms.map->end) {
if (mg == NULL) if (maps == NULL)
return -1; return -1;
ams->ms.map = maps__find(mg, ams->addr); ams->ms.map = maps__find(maps, ams->addr);
if (ams->ms.map == NULL) if (ams->ms.map == NULL)
return -1; return -1;
} }
...@@ -819,7 +816,7 @@ int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp) ...@@ -819,7 +816,7 @@ int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp)
*/ */
int maps__clone(struct thread *thread, struct maps *parent) int maps__clone(struct thread *thread, struct maps *parent)
{ {
struct maps *mg = thread->maps; struct maps *maps = thread->maps;
int err = -ENOMEM; int err = -ENOMEM;
struct map *map; struct map *map;
...@@ -830,11 +827,11 @@ int maps__clone(struct thread *thread, struct maps *parent) ...@@ -830,11 +827,11 @@ int maps__clone(struct thread *thread, struct maps *parent)
if (new == NULL) if (new == NULL)
goto out_unlock; goto out_unlock;
err = unwind__prepare_access(mg, new, NULL); err = unwind__prepare_access(maps, new, NULL);
if (err) if (err)
goto out_unlock; goto out_unlock;
maps__insert(mg, new); maps__insert(maps, new);
map__put(new); map__put(new);
} }
......
...@@ -49,39 +49,39 @@ struct kmap { ...@@ -49,39 +49,39 @@ struct kmap {
}; };
struct maps *maps__new(struct machine *machine); struct maps *maps__new(struct machine *machine);
void maps__delete(struct maps *mg); void maps__delete(struct maps *maps);
bool maps__empty(struct maps *mg); bool maps__empty(struct maps *maps);
static inline struct maps *maps__get(struct maps *mg) static inline struct maps *maps__get(struct maps *maps)
{ {
if (mg) if (maps)
refcount_inc(&mg->refcnt); refcount_inc(&maps->refcnt);
return mg; return maps;
} }
void maps__put(struct maps *mg); void maps__put(struct maps *maps);
void maps__init(struct maps *mg, struct machine *machine); void maps__init(struct maps *maps, struct machine *machine);
void maps__exit(struct maps *mg); void maps__exit(struct maps *maps);
int maps__clone(struct thread *thread, struct maps *parent); int maps__clone(struct thread *thread, struct maps *parent);
size_t maps__fprintf(struct maps *mg, FILE *fp); size_t maps__fprintf(struct maps *maps, FILE *fp);
void maps__insert(struct maps *mg, struct map *map); void maps__insert(struct maps *maps, struct map *map);
void maps__remove(struct maps *mg, struct map *map); void maps__remove(struct maps *maps, struct map *map);
struct symbol *maps__find_symbol(struct maps *mg, u64 addr, struct map **mapp); struct symbol *maps__find_symbol(struct maps *maps, u64 addr, struct map **mapp);
struct symbol *maps__find_symbol_by_name(struct maps *mg, const char *name, struct map **mapp); struct symbol *maps__find_symbol_by_name(struct maps *maps, const char *name, struct map **mapp);
struct addr_map_symbol; struct addr_map_symbol;
int maps__find_ams(struct maps *mg, struct addr_map_symbol *ams); int maps__find_ams(struct maps *maps, struct addr_map_symbol *ams);
int maps__fixup_overlappings(struct maps *mg, struct map *map, FILE *fp); int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp);
struct map *maps__find_by_name(struct maps *mg, const char *name); struct map *maps__find_by_name(struct maps *maps, const char *name);
int maps__merge_in(struct maps *kmaps, struct map *new_map); int maps__merge_in(struct maps *kmaps, struct map *new_map);
void __maps__sort_by_name(struct maps *mg); void __maps__sort_by_name(struct maps *maps);
#endif // __PERF_MAP_GROUPS_H #endif // __PERF_MAP_GROUPS_H
...@@ -239,9 +239,8 @@ void symbols__fixup_end(struct rb_root_cached *symbols) ...@@ -239,9 +239,8 @@ void symbols__fixup_end(struct rb_root_cached *symbols)
curr->end = roundup(curr->start, 4096) + 4096; curr->end = roundup(curr->start, 4096) + 4096;
} }
void maps__fixup_end(struct maps *mg) void maps__fixup_end(struct maps *maps)
{ {
struct maps *maps = mg;
struct map *prev = NULL, *curr; struct map *prev = NULL, *curr;
down_write(&maps->lock); down_write(&maps->lock);
...@@ -1771,68 +1770,67 @@ static int map__strcmp_name(const void *name, const void *b) ...@@ -1771,68 +1770,67 @@ static int map__strcmp_name(const void *name, const void *b)
return strcmp(name, map->dso->short_name); return strcmp(name, map->dso->short_name);
} }
void __maps__sort_by_name(struct maps *mg) void __maps__sort_by_name(struct maps *maps)
{ {
qsort(mg->maps_by_name, mg->nr_maps, sizeof(struct map *), map__strcmp); qsort(maps->maps_by_name, maps->nr_maps, sizeof(struct map *), map__strcmp);
} }
static int map__groups__sort_by_name_from_rbtree(struct maps *mg) static int map__groups__sort_by_name_from_rbtree(struct maps *maps)
{ {
struct map *map; struct map *map;
struct map **maps_by_name = realloc(mg->maps_by_name, mg->nr_maps * sizeof(map)); struct map **maps_by_name = realloc(maps->maps_by_name, maps->nr_maps * sizeof(map));
int i = 0; int i = 0;
if (maps_by_name == NULL) if (maps_by_name == NULL)
return -1; return -1;
mg->maps_by_name = maps_by_name; maps->maps_by_name = maps_by_name;
mg->nr_maps_allocated = mg->nr_maps; maps->nr_maps_allocated = maps->nr_maps;
maps__for_each_entry(mg, map) maps__for_each_entry(maps, map)
maps_by_name[i++] = map; maps_by_name[i++] = map;
__maps__sort_by_name(mg); __maps__sort_by_name(maps);
return 0; return 0;
} }
static struct map *__maps__find_by_name(struct maps *mg, const char *name) static struct map *__maps__find_by_name(struct maps *maps, const char *name)
{ {
struct map **mapp; struct map **mapp;
if (mg->maps_by_name == NULL && if (maps->maps_by_name == NULL &&
map__groups__sort_by_name_from_rbtree(mg)) map__groups__sort_by_name_from_rbtree(maps))
return NULL; return NULL;
mapp = bsearch(name, mg->maps_by_name, mg->nr_maps, sizeof(*mapp), map__strcmp_name); mapp = bsearch(name, maps->maps_by_name, maps->nr_maps, sizeof(*mapp), map__strcmp_name);
if (mapp) if (mapp)
return *mapp; return *mapp;
return NULL; return NULL;
} }
struct map *maps__find_by_name(struct maps *mg, const char *name) struct map *maps__find_by_name(struct maps *maps, const char *name)
{ {
struct maps *maps = mg;
struct map *map; struct map *map;
down_read(&maps->lock); down_read(&maps->lock);
if (mg->last_search_by_name && strcmp(mg->last_search_by_name->dso->short_name, name) == 0) { if (maps->last_search_by_name && strcmp(maps->last_search_by_name->dso->short_name, name) == 0) {
map = mg->last_search_by_name; map = maps->last_search_by_name;
goto out_unlock; goto out_unlock;
} }
/* /*
* If we have mg->maps_by_name, then the name isn't in the rbtree, * If we have maps->maps_by_name, then the name isn't in the rbtree,
* as mg->maps_by_name mirrors the rbtree when lookups by name are * as maps->maps_by_name mirrors the rbtree when lookups by name are
* made. * made.
*/ */
map = __maps__find_by_name(mg, name); map = __maps__find_by_name(maps, name);
if (map || mg->maps_by_name != NULL) if (map || maps->maps_by_name != NULL)
goto out_unlock; goto out_unlock;
/* Fallback to traversing the rbtree... */ /* Fallback to traversing the rbtree... */
maps__for_each_entry(maps, map) maps__for_each_entry(maps, map)
if (strcmp(map->dso->short_name, name) == 0) { if (strcmp(map->dso->short_name, name) == 0) {
mg->last_search_by_name = map; maps->last_search_by_name = map;
goto out_unlock; goto out_unlock;
} }
......
...@@ -186,7 +186,7 @@ void __symbols__insert(struct rb_root_cached *symbols, struct symbol *sym, ...@@ -186,7 +186,7 @@ void __symbols__insert(struct rb_root_cached *symbols, struct symbol *sym,
void symbols__insert(struct rb_root_cached *symbols, struct symbol *sym); void symbols__insert(struct rb_root_cached *symbols, struct symbol *sym);
void symbols__fixup_duplicate(struct rb_root_cached *symbols); void symbols__fixup_duplicate(struct rb_root_cached *symbols);
void symbols__fixup_end(struct rb_root_cached *symbols); void symbols__fixup_end(struct rb_root_cached *symbols);
void maps__fixup_end(struct maps *mg); void maps__fixup_end(struct maps *maps);
typedef int (*mapfn_t)(u64 start, u64 len, u64 pgoff, void *data); typedef int (*mapfn_t)(u64 start, u64 len, u64 pgoff, void *data);
int file__read_maps(int fd, bool exe, mapfn_t mapfn, void *data, int file__read_maps(int fd, bool exe, mapfn_t mapfn, void *data,
......
...@@ -616,26 +616,26 @@ static unw_accessors_t accessors = { ...@@ -616,26 +616,26 @@ static unw_accessors_t accessors = {
.get_proc_name = get_proc_name, .get_proc_name = get_proc_name,
}; };
static int _unwind__prepare_access(struct maps *mg) static int _unwind__prepare_access(struct maps *maps)
{ {
mg->addr_space = unw_create_addr_space(&accessors, 0); maps->addr_space = unw_create_addr_space(&accessors, 0);
if (!mg->addr_space) { if (!maps->addr_space) {
pr_err("unwind: Can't create unwind address space.\n"); pr_err("unwind: Can't create unwind address space.\n");
return -ENOMEM; return -ENOMEM;
} }
unw_set_caching_policy(mg->addr_space, UNW_CACHE_GLOBAL); unw_set_caching_policy(maps->addr_space, UNW_CACHE_GLOBAL);
return 0; return 0;
} }
static void _unwind__flush_access(struct maps *mg) static void _unwind__flush_access(struct maps *maps)
{ {
unw_flush_cache(mg->addr_space, 0, 0); unw_flush_cache(maps->addr_space, 0, 0);
} }
static void _unwind__finish_access(struct maps *mg) static void _unwind__finish_access(struct maps *maps)
{ {
unw_destroy_addr_space(mg->addr_space); unw_destroy_addr_space(maps->addr_space);
} }
static int get_entries(struct unwind_info *ui, unwind_entry_cb_t cb, static int get_entries(struct unwind_info *ui, unwind_entry_cb_t cb,
......
...@@ -12,12 +12,12 @@ struct unwind_libunwind_ops __weak *local_unwind_libunwind_ops; ...@@ -12,12 +12,12 @@ struct unwind_libunwind_ops __weak *local_unwind_libunwind_ops;
struct unwind_libunwind_ops __weak *x86_32_unwind_libunwind_ops; struct unwind_libunwind_ops __weak *x86_32_unwind_libunwind_ops;
struct unwind_libunwind_ops __weak *arm64_unwind_libunwind_ops; struct unwind_libunwind_ops __weak *arm64_unwind_libunwind_ops;
static void unwind__register_ops(struct maps *mg, struct unwind_libunwind_ops *ops) static void unwind__register_ops(struct maps *maps, struct unwind_libunwind_ops *ops)
{ {
mg->unwind_libunwind_ops = ops; maps->unwind_libunwind_ops = ops;
} }
int unwind__prepare_access(struct maps *mg, struct map *map, bool *initialized) int unwind__prepare_access(struct maps *maps, struct map *map, bool *initialized)
{ {
const char *arch; const char *arch;
enum dso_type dso_type; enum dso_type dso_type;
...@@ -27,7 +27,7 @@ int unwind__prepare_access(struct maps *mg, struct map *map, bool *initialized) ...@@ -27,7 +27,7 @@ int unwind__prepare_access(struct maps *mg, struct map *map, bool *initialized)
if (!dwarf_callchain_users) if (!dwarf_callchain_users)
return 0; return 0;
if (mg->addr_space) { if (maps->addr_space) {
pr_debug("unwind: thread map already set, dso=%s\n", pr_debug("unwind: thread map already set, dso=%s\n",
map->dso->name); map->dso->name);
if (initialized) if (initialized)
...@@ -36,14 +36,14 @@ int unwind__prepare_access(struct maps *mg, struct map *map, bool *initialized) ...@@ -36,14 +36,14 @@ int unwind__prepare_access(struct maps *mg, struct map *map, bool *initialized)
} }
/* env->arch is NULL for live-mode (i.e. perf top) */ /* env->arch is NULL for live-mode (i.e. perf top) */
if (!mg->machine->env || !mg->machine->env->arch) if (!maps->machine->env || !maps->machine->env->arch)
goto out_register; goto out_register;
dso_type = dso__type(map->dso, mg->machine); dso_type = dso__type(map->dso, maps->machine);
if (dso_type == DSO__TYPE_UNKNOWN) if (dso_type == DSO__TYPE_UNKNOWN)
return 0; return 0;
arch = perf_env__arch(mg->machine->env); arch = perf_env__arch(maps->machine->env);
if (!strcmp(arch, "x86")) { if (!strcmp(arch, "x86")) {
if (dso_type != DSO__TYPE_64BIT) if (dso_type != DSO__TYPE_64BIT)
...@@ -58,24 +58,24 @@ int unwind__prepare_access(struct maps *mg, struct map *map, bool *initialized) ...@@ -58,24 +58,24 @@ int unwind__prepare_access(struct maps *mg, struct map *map, bool *initialized)
return 0; return 0;
} }
out_register: out_register:
unwind__register_ops(mg, ops); unwind__register_ops(maps, ops);
err = mg->unwind_libunwind_ops->prepare_access(mg); err = maps->unwind_libunwind_ops->prepare_access(maps);
if (initialized) if (initialized)
*initialized = err ? false : true; *initialized = err ? false : true;
return err; return err;
} }
void unwind__flush_access(struct maps *mg) void unwind__flush_access(struct maps *maps)
{ {
if (mg->unwind_libunwind_ops) if (maps->unwind_libunwind_ops)
mg->unwind_libunwind_ops->flush_access(mg); maps->unwind_libunwind_ops->flush_access(maps);
} }
void unwind__finish_access(struct maps *mg) void unwind__finish_access(struct maps *maps)
{ {
if (mg->unwind_libunwind_ops) if (maps->unwind_libunwind_ops)
mg->unwind_libunwind_ops->finish_access(mg); maps->unwind_libunwind_ops->finish_access(maps);
} }
int unwind__get_entries(unwind_entry_cb_t cb, void *arg, int unwind__get_entries(unwind_entry_cb_t cb, void *arg,
......
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