mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-29 17:25:38 +00:00
perf map: API clean up
map__init() is only used internally so make it static. Assume memory is zero initialized, which will better support adding fields to struct map in the future and was already the case for map__new2. To reduce complexity, change set_priv and set_erange_warned to not take a value to assign as they always assign true. Signed-off-by: Ian Rogers <irogers@google.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Anne Macedo <retpolanne@posteo.net> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com> Cc: Casey Chen <cachen@purestorage.com> Cc: Chaitanya S Prakash <chaitanyas.prakash@arm.com> Cc: Colin Ian King <colin.i.king@gmail.com> Cc: Dominique Martinet <asmadeus@codewreck.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: James Clark <james.clark@linaro.org> Cc: Jann Horn <jannh@google.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Masahiro Yamada <masahiroy@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Sun Haiyong <sunhaiyong@loongson.cn> Cc: Weilin Wang <weilin.wang@intel.com> Cc: Yang Jihong <yangjihong1@huawei.com> Cc: Yunseong Kim <yskelg@gmail.com> Cc: Ze Gao <zegao2021@gmail.com> Link: https://lore.kernel.org/r/20240817064442.2152089-3-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
2aebebb834
commit
a031073626
@ -191,7 +191,7 @@ static void ui__warn_map_erange(struct map *map, struct symbol *sym, u64 ip)
|
||||
if (use_browser <= 0)
|
||||
sleep(5);
|
||||
|
||||
map__set_erange_warned(map, true);
|
||||
map__set_erange_warned(map);
|
||||
}
|
||||
|
||||
static void perf_top__record_precise_ip(struct perf_top *top,
|
||||
|
@ -131,7 +131,7 @@ static int test__vmlinux_matches_kallsyms_cb1(struct map *map, void *data)
|
||||
(dso__kernel(dso) ? dso__short_name(dso) : dso__name(dso)));
|
||||
|
||||
if (pair) {
|
||||
map__set_priv(pair, 1);
|
||||
map__set_priv(pair);
|
||||
map__put(pair);
|
||||
} else {
|
||||
if (!args->header_printed) {
|
||||
@ -166,7 +166,7 @@ static int test__vmlinux_matches_kallsyms_cb2(struct map *map, void *data)
|
||||
pr_info(":\nWARN: *%" PRIx64 "-%" PRIx64 " %" PRIx64,
|
||||
map__start(pair), map__end(pair), map__pgoff(pair));
|
||||
pr_info(" %s\n", dso__name(dso));
|
||||
map__set_priv(pair, 1);
|
||||
map__set_priv(pair);
|
||||
}
|
||||
map__put(pair);
|
||||
return 0;
|
||||
|
@ -102,16 +102,20 @@ static inline bool replace_android_lib(const char *filename, char *newfilename)
|
||||
return false;
|
||||
}
|
||||
|
||||
void map__init(struct map *map, u64 start, u64 end, u64 pgoff, struct dso *dso)
|
||||
static void map__init(struct map *map, u64 start, u64 end, u64 pgoff,
|
||||
struct dso *dso, u32 prot, u32 flags)
|
||||
{
|
||||
map__set_start(map, start);
|
||||
map__set_end(map, end);
|
||||
map__set_pgoff(map, pgoff);
|
||||
map__set_reloc(map, 0);
|
||||
assert(map__reloc(map) == 0);
|
||||
map__set_dso(map, dso__get(dso));
|
||||
map__set_mapping_type(map, MAPPING_TYPE__DSO);
|
||||
map__set_erange_warned(map, false);
|
||||
refcount_set(map__refcnt(map), 1);
|
||||
RC_CHK_ACCESS(map)->prot = prot;
|
||||
RC_CHK_ACCESS(map)->flags = flags;
|
||||
map__set_mapping_type(map, MAPPING_TYPE__DSO);
|
||||
assert(map__erange_warned(map) == false);
|
||||
assert(map__priv(map) == false);
|
||||
}
|
||||
|
||||
struct map *map__new(struct machine *machine, u64 start, u64 len,
|
||||
@ -124,7 +128,7 @@ struct map *map__new(struct machine *machine, u64 start, u64 len,
|
||||
struct nsinfo *nsi = NULL;
|
||||
struct nsinfo *nnsi;
|
||||
|
||||
map = malloc(sizeof(*map));
|
||||
map = zalloc(sizeof(*map));
|
||||
if (ADD_RC_CHK(result, map)) {
|
||||
char newfilename[PATH_MAX];
|
||||
struct dso *dso, *header_bid_dso;
|
||||
@ -134,8 +138,6 @@ struct map *map__new(struct machine *machine, u64 start, u64 len,
|
||||
anon = is_anon_memory(filename) || flags & MAP_HUGETLB;
|
||||
vdso = is_vdso_map(filename);
|
||||
no_dso = is_no_dso_memory(filename);
|
||||
map->prot = prot;
|
||||
map->flags = flags;
|
||||
nsi = nsinfo__get(thread__nsinfo(thread));
|
||||
|
||||
if ((anon || no_dso) && nsi && (prot & PROT_EXEC)) {
|
||||
@ -169,7 +171,7 @@ struct map *map__new(struct machine *machine, u64 start, u64 len,
|
||||
goto out_delete;
|
||||
|
||||
assert(!dso__kernel(dso));
|
||||
map__init(result, start, start + len, pgoff, dso);
|
||||
map__init(result, start, start + len, pgoff, dso, prot, flags);
|
||||
|
||||
if (anon || no_dso) {
|
||||
map->mapping_type = MAPPING_TYPE__IDENTITY;
|
||||
@ -223,10 +225,8 @@ struct map *map__new2(u64 start, struct dso *dso)
|
||||
|
||||
map = calloc(1, sizeof(*map) + (dso__kernel(dso) ? sizeof(struct kmap) : 0));
|
||||
if (ADD_RC_CHK(result, map)) {
|
||||
/*
|
||||
* ->end will be filled after we load all the symbols
|
||||
*/
|
||||
map__init(result, start, 0, 0, dso);
|
||||
/* ->end will be filled after we load all the symbols. */
|
||||
map__init(result, start, /*end=*/0, /*pgoff=*/0, dso, /*prot=*/0, /*flags=*/0);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
@ -166,9 +166,6 @@ struct thread;
|
||||
#define map__for_each_symbol_by_name(map, sym_name, pos, idx) \
|
||||
__map__for_each_symbol_by_name(map, sym_name, (pos), idx)
|
||||
|
||||
void map__init(struct map *map,
|
||||
u64 start, u64 end, u64 pgoff, struct dso *dso);
|
||||
|
||||
struct dso_id;
|
||||
struct build_id;
|
||||
|
||||
@ -285,14 +282,14 @@ static inline void map__set_reloc(struct map *map, u64 reloc)
|
||||
RC_CHK_ACCESS(map)->reloc = reloc;
|
||||
}
|
||||
|
||||
static inline void map__set_priv(struct map *map, int priv)
|
||||
static inline void map__set_priv(struct map *map)
|
||||
{
|
||||
RC_CHK_ACCESS(map)->priv = priv;
|
||||
RC_CHK_ACCESS(map)->priv = true;
|
||||
}
|
||||
|
||||
static inline void map__set_erange_warned(struct map *map, bool erange_warned)
|
||||
static inline void map__set_erange_warned(struct map *map)
|
||||
{
|
||||
RC_CHK_ACCESS(map)->erange_warned = erange_warned;
|
||||
RC_CHK_ACCESS(map)->erange_warned = true;
|
||||
}
|
||||
|
||||
static inline void map__set_dso(struct map *map, struct dso *dso)
|
||||
|
Loading…
Reference in New Issue
Block a user