perf buildid-list: Use perf_tool__init
Reduce scope of build_id__mark_dso_hit_ops() to the scope of function perf_session__list_build_ids, its only use, and use perf_tool__init() for the default values. Move perf_event__exit_del_thread() to event.[ch] so it can be used in builtin-buildid-list.c. Signed-off-by: Ian Rogers <irogers@google.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Anshuman Khandual <anshuman.khandual@arm.com> Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com> Cc: Huacai Chen <chenhuacai@kernel.org> Cc: Ilkka Koskinen <ilkka@os.amperecomputing.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: James Clark <james.clark@arm.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: John Garry <john.g.garry@oracle.com> Cc: Jonathan Cameron <jonathan.cameron@huawei.com> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Leo Yan <leo.yan@linux.dev> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Mike Leach <mike.leach@linaro.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Nick Desaulniers <ndesaulniers@google.com> Cc: Nick Terrell <terrelln@fb.com> Cc: Oliver Upton <oliver.upton@linux.dev> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Song Liu <song@kernel.org> Cc: Sun Haiyong <sunhaiyong@loongson.cn> Cc: Suzuki Poulouse <suzuki.poulose@arm.com> Cc: Will Deacon <will@kernel.org> Cc: Yanteng Si <siyanteng@loongson.cn> Cc: Yicong Yang <yangyicong@hisilicon.com> Cc: linux-arm-kernel@lists.infradead.org Link: https://lore.kernel.org/r/20240812204720.631678-8-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
f32b37cc78
commit
584a268f50
@ -89,6 +89,7 @@ static int perf_session__list_build_ids(bool force, bool with_hits)
|
||||
.mode = PERF_DATA_MODE_READ,
|
||||
.force = force,
|
||||
};
|
||||
struct perf_tool build_id__mark_dso_hit_ops;
|
||||
|
||||
symbol__elf_init();
|
||||
/*
|
||||
@ -97,6 +98,15 @@ static int perf_session__list_build_ids(bool force, bool with_hits)
|
||||
if (filename__fprintf_build_id(input_name, stdout) > 0)
|
||||
goto out;
|
||||
|
||||
perf_tool__init(&build_id__mark_dso_hit_ops, /*ordered_events=*/true);
|
||||
build_id__mark_dso_hit_ops.sample = build_id__mark_dso_hit;
|
||||
build_id__mark_dso_hit_ops.mmap = perf_event__process_mmap;
|
||||
build_id__mark_dso_hit_ops.mmap2 = perf_event__process_mmap2;
|
||||
build_id__mark_dso_hit_ops.fork = perf_event__process_fork;
|
||||
build_id__mark_dso_hit_ops.exit = perf_event__exit_del_thread;
|
||||
build_id__mark_dso_hit_ops.attr = perf_event__process_attr;
|
||||
build_id__mark_dso_hit_ops.build_id = perf_event__process_build_id;
|
||||
|
||||
session = perf_session__new(&data, &build_id__mark_dso_hit_ops);
|
||||
if (IS_ERR(session))
|
||||
return PTR_ERR(session);
|
||||
|
@ -67,38 +67,6 @@ int build_id__mark_dso_hit(const struct perf_tool *tool __maybe_unused,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int perf_event__exit_del_thread(const struct perf_tool *tool __maybe_unused,
|
||||
union perf_event *event,
|
||||
struct perf_sample *sample
|
||||
__maybe_unused,
|
||||
struct machine *machine)
|
||||
{
|
||||
struct thread *thread = machine__findnew_thread(machine,
|
||||
event->fork.pid,
|
||||
event->fork.tid);
|
||||
|
||||
dump_printf("(%d:%d):(%d:%d)\n", event->fork.pid, event->fork.tid,
|
||||
event->fork.ppid, event->fork.ptid);
|
||||
|
||||
if (thread) {
|
||||
machine__remove_thread(machine, thread);
|
||||
thread__put(thread);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct perf_tool build_id__mark_dso_hit_ops = {
|
||||
.sample = build_id__mark_dso_hit,
|
||||
.mmap = perf_event__process_mmap,
|
||||
.mmap2 = perf_event__process_mmap2,
|
||||
.fork = perf_event__process_fork,
|
||||
.exit = perf_event__exit_del_thread,
|
||||
.attr = perf_event__process_attr,
|
||||
.build_id = perf_event__process_build_id,
|
||||
.ordered_events = true,
|
||||
};
|
||||
|
||||
int build_id__sprintf(const struct build_id *build_id, char *bf)
|
||||
{
|
||||
char *bid = bf;
|
||||
|
@ -16,11 +16,9 @@ struct build_id {
|
||||
size_t size;
|
||||
};
|
||||
|
||||
struct nsinfo;
|
||||
|
||||
extern struct perf_tool build_id__mark_dso_hit_ops;
|
||||
struct dso;
|
||||
struct feat_fd;
|
||||
struct nsinfo;
|
||||
|
||||
void build_id__init(struct build_id *bid, const u8 *data, size_t size);
|
||||
int build_id__sprintf(const struct build_id *build_id, char *bf);
|
||||
|
@ -426,6 +426,26 @@ int perf_event__process_exit(const struct perf_tool *tool __maybe_unused,
|
||||
return machine__process_exit_event(machine, event, sample);
|
||||
}
|
||||
|
||||
int perf_event__exit_del_thread(const struct perf_tool *tool __maybe_unused,
|
||||
union perf_event *event,
|
||||
struct perf_sample *sample __maybe_unused,
|
||||
struct machine *machine)
|
||||
{
|
||||
struct thread *thread = machine__findnew_thread(machine,
|
||||
event->fork.pid,
|
||||
event->fork.tid);
|
||||
|
||||
dump_printf("(%d:%d):(%d:%d)\n", event->fork.pid, event->fork.tid,
|
||||
event->fork.ppid, event->fork.ptid);
|
||||
|
||||
if (thread) {
|
||||
machine__remove_thread(machine, thread);
|
||||
thread__put(thread);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t perf_event__fprintf_aux(union perf_event *event, FILE *fp)
|
||||
{
|
||||
return fprintf(fp, " offset: %#"PRI_lx64" size: %#"PRI_lx64" flags: %#"PRI_lx64" [%s%s%s]\n",
|
||||
|
@ -319,6 +319,10 @@ int perf_event__process_exit(const struct perf_tool *tool,
|
||||
union perf_event *event,
|
||||
struct perf_sample *sample,
|
||||
struct machine *machine);
|
||||
int perf_event__exit_del_thread(const struct perf_tool *tool,
|
||||
union perf_event *event,
|
||||
struct perf_sample *sample,
|
||||
struct machine *machine);
|
||||
int perf_event__process_ksymbol(const struct perf_tool *tool,
|
||||
union perf_event *event,
|
||||
struct perf_sample *sample,
|
||||
|
Loading…
Reference in New Issue
Block a user