From: Ian Rogers <irogers@google.com>
To: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Kan Liang <kan.liang@linux.intel.com>,
John Garry <john.g.garry@oracle.com>,
Will Deacon <will@kernel.org>, James Clark <james.clark@arm.com>,
Mike Leach <mike.leach@linaro.org>, Leo Yan <leo.yan@linux.dev>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Yicong Yang <yangyicong@hisilicon.com>,
Jonathan Cameron <jonathan.cameron@huawei.com>,
Nick Terrell <terrelln@fb.com>,
Nick Desaulniers <ndesaulniers@google.com>,
Oliver Upton <oliver.upton@linux.dev>,
Anshuman Khandual <anshuman.khandual@arm.com>,
Song Liu <song@kernel.org>,
Ilkka Koskinen <ilkka@os.amperecomputing.com>,
Athira Rajeev <atrajeev@linux.vnet.ibm.com>,
Huacai Chen <chenhuacai@kernel.org>,
Yanteng Si <siyanteng@loongson.cn>,
Sun Haiyong <sunhaiyong@loongson.cn>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: [PATCH v6 07/27] perf buildid-list: Use perf_tool__init
Date: Wed, 17 Jul 2024 18:00:03 -0700 [thread overview]
Message-ID: <20240718010023.1495687-8-irogers@google.com> (raw)
In-Reply-To: <20240718010023.1495687-1-irogers@google.com>
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>
Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
---
tools/perf/builtin-buildid-list.c | 10 ++++++++++
tools/perf/util/build-id.c | 32 -------------------------------
tools/perf/util/build-id.h | 4 +---
tools/perf/util/event.c | 20 +++++++++++++++++++
tools/perf/util/event.h | 4 ++++
5 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/tools/perf/builtin-buildid-list.c b/tools/perf/builtin-buildid-list.c
index 383d5de36ce4..52dfacaff8e3 100644
--- a/tools/perf/builtin-buildid-list.c
+++ b/tools/perf/builtin-buildid-list.c
@@ -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);
diff --git a/tools/perf/util/build-id.c b/tools/perf/util/build-id.c
index 098fcc625d91..451d145fa4ed 100644
--- a/tools/perf/util/build-id.c
+++ b/tools/perf/util/build-id.c
@@ -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;
diff --git a/tools/perf/util/build-id.h b/tools/perf/util/build-id.h
index ae87c4c58d5b..a212497bfdb0 100644
--- a/tools/perf/util/build-id.h
+++ b/tools/perf/util/build-id.h
@@ -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);
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
index c2f0e7f40ad5..aac96d5d1917 100644
--- a/tools/perf/util/event.c
+++ b/tools/perf/util/event.c
@@ -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",
diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h
index 4b24f1c580fd..f8742e6230a5 100644
--- a/tools/perf/util/event.h
+++ b/tools/perf/util/event.h
@@ -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,
--
2.45.2.1089.g2a221341d9-goog
next prev parent reply other threads:[~2024-07-18 1:00 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-18 0:59 [PATCH v6 00/27] Constify tool pointers Ian Rogers
2024-07-18 0:59 ` [PATCH v6 01/27] perf auxtrace: Remove dummy tools Ian Rogers
2024-07-18 0:59 ` [PATCH v6 02/27] perf s390-cpumsf: Remove unused struct Ian Rogers
2024-07-18 0:59 ` [PATCH v6 03/27] perf tool: Constify tool pointers Ian Rogers
2024-07-18 1:00 ` [PATCH v6 04/27] perf tool: Move fill defaults into tool.c Ian Rogers
2024-07-18 1:00 ` [PATCH v6 05/27] perf tool: Add perf_tool__init Ian Rogers
2024-07-18 1:00 ` [PATCH v6 06/27] perf kmem: Use perf_tool__init Ian Rogers
2024-07-18 1:00 ` Ian Rogers [this message]
2024-07-18 1:00 ` [PATCH v6 08/27] perf kvm: " Ian Rogers
2024-07-18 1:00 ` [PATCH v6 09/27] perf lock: " Ian Rogers
2024-07-18 1:00 ` [PATCH v6 10/27] perf evlist: " Ian Rogers
2024-07-18 1:00 ` [PATCH v6 11/27] perf record: " Ian Rogers
2024-07-18 1:00 ` [PATCH v6 12/27] perf c2c: " Ian Rogers
2024-07-18 1:00 ` [PATCH v6 13/27] perf script: " Ian Rogers
2024-07-18 1:00 ` [PATCH v6 14/27] perf inject: " Ian Rogers
2024-07-18 1:00 ` [PATCH v6 15/27] perf report: " Ian Rogers
2024-07-18 1:00 ` [PATCH v6 16/27] perf stat: " Ian Rogers
2024-07-18 1:00 ` [PATCH v6 17/27] perf annotate: " Ian Rogers
2024-07-18 1:00 ` [PATCH v6 18/27] perf sched: " Ian Rogers
2024-07-18 1:00 ` [PATCH v6 19/27] perf mem: " Ian Rogers
2024-07-18 1:00 ` [PATCH v6 20/27] perf timechart: " Ian Rogers
2024-07-18 1:00 ` [PATCH v6 21/27] perf diff: " Ian Rogers
2024-07-18 1:00 ` [PATCH v6 22/27] perf data convert json: " Ian Rogers
2024-07-18 1:00 ` [PATCH v6 23/27] perf data convert ctf: " Ian Rogers
2024-07-18 1:00 ` [PATCH v6 24/27] perf test event_update: Ensure tools is initialized Ian Rogers
2024-07-18 1:00 ` [PATCH v6 25/27] perf kwork: Use perf_tool__init Ian Rogers
2024-07-18 1:00 ` [PATCH v6 26/27] perf tool: Remove perf_tool__fill_defaults Ian Rogers
2024-07-18 1:00 ` [PATCH v6 27/27] perf session: Constify tool Ian Rogers
2024-07-19 8:50 ` [PATCH v6 00/27] Constify tool pointers Adrian Hunter
2024-07-19 16:26 ` Ian Rogers
2024-07-22 8:28 ` Adrian Hunter
2024-07-22 16:06 ` Ian Rogers
2024-07-22 17:45 ` Namhyung Kim
2024-07-22 17:50 ` Ian Rogers
2024-07-22 18:04 ` Ian Rogers
2024-07-23 9:38 ` Adrian Hunter
2024-07-23 12:50 ` Ian Rogers
2024-08-12 13:53 ` Arnaldo Carvalho de Melo
2024-08-12 18:10 ` Ian Rogers
2024-08-12 19:54 ` Arnaldo Carvalho de Melo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240718010023.1495687-8-irogers@google.com \
--to=irogers@google.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=anshuman.khandual@arm.com \
--cc=atrajeev@linux.vnet.ibm.com \
--cc=chenhuacai@kernel.org \
--cc=ilkka@os.amperecomputing.com \
--cc=james.clark@arm.com \
--cc=john.g.garry@oracle.com \
--cc=jolsa@kernel.org \
--cc=jonathan.cameron@huawei.com \
--cc=kan.liang@linux.intel.com \
--cc=leo.yan@linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mike.leach@linaro.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=ndesaulniers@google.com \
--cc=oliver.upton@linux.dev \
--cc=peterz@infradead.org \
--cc=siyanteng@loongson.cn \
--cc=song@kernel.org \
--cc=sunhaiyong@loongson.cn \
--cc=suzuki.poulose@arm.com \
--cc=terrelln@fb.com \
--cc=will@kernel.org \
--cc=yangyicong@hisilicon.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).