[PATCH v1 16/25] perf inject: Don't pass evsel with sample

Ian Rogers
2026-02-09T17:41:17Z

The sample contains the evsel and so it is unnecessary to pass the
evsel as well.

Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/perf/builtin-inject.c | 37 +++++++++++-------------------
tools/perf/util/synthetic-events.c | 9 ++++----
tools/perf/util/synthetic-events.h | 2 --
3 files changed, 18 insertions(+), 30 deletions(-)

diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c
index 016ad84ac4ab..66038d68277e 100644
--- a/tools/perf/builtin-inject.c
+++ b/tools/perf/builtin-inject.c
@@ -146,14 +146,12 @@ struct event_entry {
static int tool__inject_build_id(const struct perf_tool *tool,
struct perf_sample *sample,
struct machine *machine,
- const struct evsel *evsel,
__u16 misc,
const char *filename,
struct dso *dso, u32 flags);
static int tool__inject_mmap2_build_id(const struct perf_tool *tool,
struct perf_sample *sample,
struct machine *machine,
- const struct evsel *evsel,
__u16 misc,
__u32 pid, __u32 tid,
__u64 start, __u64 len, __u64 pgoff,
@@ -357,7 +355,6 @@ perf_inject__cut_auxtrace_sample(struct perf_inject *inject,
typedef int (*inject_handler)(const struct perf_tool *tool,
union perf_event *event,
struct perf_sample *sample,
- struct evsel *evsel,
struct machine *machine);

static int perf_event__repipe_sample(const struct perf_tool *tool,
@@ -370,7 +367,7 @@ static int perf_event__repipe_sample(const struct perf_tool *tool,

if (evsel && evsel->handler) {
inject_handler f = evsel->handler;
- return f(tool, event, sample, evsel, machine);
+ return f(tool, event, sample, machine);
}

build_id__mark_dso_hit(tool, event, sample, machine);
@@ -584,11 +581,14 @@ static int perf_event__repipe_common_mmap(const struct perf_tool *tool,
}

if (dso && !dso__hit(dso)) {
- struct evsel *evsel = evlist__event2evsel(inject->session->evlist, event);
+ struct evsel *evsel = sample->evsel;
+
+ if (!evsel)
+ evlist__event2evsel(inject->session->evlist, event);

if (evsel) {
dso__set_hit(dso);
- tool__inject_build_id(tool, sample, machine, evsel,
+ tool__inject_build_id(tool, sample, machine,
/*misc=*/sample->cpumode,
filename, dso, flags);
}
@@ -622,7 +622,7 @@ static int perf_event__repipe_common_mmap(const struct perf_tool *tool,
dso_sought = true;
}
if (evsel && dso &&
- !tool__inject_mmap2_build_id(tool, sample, machine, evsel,
+ !tool__inject_mmap2_build_id(tool, sample, machine,
sample->cpumode | PERF_RECORD_MISC_MMAP_BUILD_ID,
pid, tid, start, len, pgoff,
dso,
@@ -836,7 +836,6 @@ static bool perf_inject__lookup_known_build_id(struct perf_inject *inject,
static int tool__inject_build_id(const struct perf_tool *tool,
struct perf_sample *sample,
struct machine *machine,
- const struct evsel *evsel,
__u16 misc,
const char *filename,
struct dso *dso, u32 flags)
@@ -860,7 +859,7 @@ static int tool__inject_build_id(const struct perf_tool *tool,

err = perf_event__synthesize_build_id(tool, sample, machine,
perf_event__repipe,
- evsel, misc, dso__bid(dso),
+ misc, dso__bid(dso),
filename);
if (err) {
pr_err("Can't synthesize build_id event for %s\n", filename);
@@ -873,7 +872,6 @@ static int tool__inject_build_id(const struct perf_tool *tool,
static int tool__inject_mmap2_build_id(const struct perf_tool *tool,
struct perf_sample *sample,
struct machine *machine,
- const struct evsel *evsel,
__u16 misc,
__u32 pid, __u32 tid,
__u64 start, __u64 len, __u64 pgoff,
@@ -896,7 +894,6 @@ static int tool__inject_mmap2_build_id(const struct perf_tool *tool,

err = perf_event__synthesize_mmap2_build_id(tool, sample, machine,
perf_event__repipe,
- evsel,
misc, pid, tid,
start, len, pgoff,
dso__bid(dso),
@@ -913,7 +910,6 @@ static int mark_dso_hit(const struct perf_inject *inject,
const struct perf_tool *tool,
struct perf_sample *sample,
struct machine *machine,
- const struct evsel *mmap_evsel,
struct map *map, bool sample_in_dso)
{
struct dso *dso;
@@ -943,7 +939,7 @@ static int mark_dso_hit(const struct perf_inject *inject,
if (dso && !dso__hit(dso)) {
dso__set_hit(dso);
tool__inject_build_id(tool, sample, machine,
- mmap_evsel, misc, dso__long_name(dso), dso,
+ misc, dso__long_name(dso), dso,
map__flags(map));
}
} else if (inject->build_id_style == BID_RWS__MMAP2_BUILDID_LAZY) {
@@ -955,7 +951,6 @@ static int mark_dso_hit(const struct perf_inject *inject,
map__set_hit(map);
perf_event__synthesize_mmap2_build_id(tool, sample, machine,
perf_event__repipe,
- mmap_evsel,
misc,
sample->pid, sample->tid,
map__start(map),
@@ -975,7 +970,6 @@ struct mark_dso_hit_args {
const struct perf_tool *tool;
struct perf_sample *sample;
struct machine *machine;
- const struct evsel *mmap_evsel;
};

static int mark_dso_hit_callback(struct callchain_cursor_node *node, void *data)
@@ -984,7 +978,7 @@ static int mark_dso_hit_callback(struct callchain_cursor_node *node, void *data)
struct map *map = node->ms.map;

return mark_dso_hit(args->inject, args->tool, args->sample, args->machine,
- args->mmap_evsel, map, /*sample_in_dso=*/false);
+ map, /*sample_in_dso=*/false);
}

static int perf_event__inject_buildid(const struct perf_tool *tool, union perf_event *event,
@@ -1002,7 +996,6 @@ static int perf_event__inject_buildid(const struct perf_tool *tool, union perf_e
*/
.sample = sample,
.machine = machine,
- .mmap_evsel = inject__mmap_evsel(inject),
};
struct evsel *saved_evsel = sample->evsel;

@@ -1015,7 +1008,7 @@ static int perf_event__inject_buildid(const struct perf_tool *tool, union perf_e
}

if (thread__find_map(thread, sample->cpumode, sample->ip, &al)) {
- mark_dso_hit(inject, tool, sample, machine, args.mmap_evsel, al.map,
+ mark_dso_hit(inject, tool, sample, machine, al.map,
/*sample_in_dso=*/true);
}

@@ -1033,7 +1026,6 @@ static int perf_event__inject_buildid(const struct perf_tool *tool, union perf_e
static int perf_inject__sched_process_exit(const struct perf_tool *tool,
union perf_event *event __maybe_unused,
struct perf_sample *sample,
- struct evsel *evsel __maybe_unused,
struct machine *machine __maybe_unused)
{
struct perf_inject *inject = container_of(tool, struct perf_inject, tool);
@@ -1053,13 +1045,12 @@ static int perf_inject__sched_process_exit(const struct perf_tool *tool,
static int perf_inject__sched_switch(const struct perf_tool *tool,
union perf_event *event,
struct perf_sample *sample,
- struct evsel *evsel,
struct machine *machine)
{
struct perf_inject *inject = container_of(tool, struct perf_inject, tool);
struct event_entry *ent;

- perf_inject__sched_process_exit(tool, event, sample, evsel, machine);
+ perf_inject__sched_process_exit(tool, event, sample, machine);

ent = malloc(event->header.size + sizeof(struct event_entry));
if (ent == NULL) {
@@ -1078,13 +1069,13 @@ static int perf_inject__sched_switch(const struct perf_tool *tool,
static int perf_inject__sched_stat(const struct perf_tool *tool,
union perf_event *event __maybe_unused,
struct perf_sample *sample,
- struct evsel *evsel,
struct machine *machine)
{
struct event_entry *ent;
union perf_event *event_sw;
struct perf_sample sample_sw;
struct perf_inject *inject = container_of(tool, struct perf_inject, tool);
+ struct evsel *evsel = sample->evsel;
u32 pid = perf_sample__intval(sample, "pid");
int ret;

@@ -1451,7 +1442,7 @@ static int synthesize_build_id(struct perf_inject *inject, struct dso *dso, pid_
dso__set_hit(dso);

return perf_event__synthesize_build_id(&inject->tool, &synth_sample, machine,
- process_build_id, inject__mmap_evsel(inject),
+ process_build_id,
/*misc=*/synth_sample.cpumode,
dso__bid(dso), dso__long_name(dso));
}
diff --git a/tools/perf/util/synthetic-events.c b/tools/perf/util/synthetic-events.c
index ef79433ebc3a..53e411cf33cc 100644
--- a/tools/perf/util/synthetic-events.c
+++ b/tools/perf/util/synthetic-events.c
@@ -2247,7 +2247,6 @@ int perf_event__synthesize_build_id(const struct perf_tool *tool,
struct perf_sample *sample,
struct machine *machine,
perf_event__handler_t process,
- const struct evsel *evsel,
__u16 misc,
const struct build_id *bid,
const char *filename)
@@ -2270,12 +2269,13 @@ int perf_event__synthesize_build_id(const struct perf_tool *tool,
ev.build_id.header.size = len;
strcpy(ev.build_id.filename, filename);

- if (evsel) {
+ if (sample->evsel) {
void *array = &ev;
int ret;

array += ev.header.size;
- ret = perf_event__synthesize_id_sample(array, evsel->core.attr.sample_type, sample);
+ ret = perf_event__synthesize_id_sample(array, sample->evsel->core.attr.sample_type,
+ sample);
if (ret < 0)
return ret;

@@ -2294,7 +2294,6 @@ int perf_event__synthesize_mmap2_build_id(const struct perf_tool *tool,
struct perf_sample *sample,
struct machine *machine,
perf_event__handler_t process,
- const struct evsel *evsel,
__u16 misc,
__u32 pid, __u32 tid,
__u64 start, __u64 len, __u64 pgoff,
@@ -2334,7 +2333,7 @@ int perf_event__synthesize_mmap2_build_id(const struct perf_tool *tool,

array = &ev;
array += ev.header.size;
- ret = perf_event__synthesize_id_sample(array, evsel->core.attr.sample_type, sample);
+ ret = perf_event__synthesize_id_sample(array, sample->evsel->core.attr.sample_type, sample);
if (ret < 0)
return ret;

diff --git a/tools/perf/util/synthetic-events.h b/tools/perf/util/synthetic-events.h
index b0edad0c3100..473a43a78993 100644
--- a/tools/perf/util/synthetic-events.h
+++ b/tools/perf/util/synthetic-events.h
@@ -50,7 +50,6 @@ int perf_event__synthesize_build_id(const struct perf_tool *tool,
struct perf_sample *sample,
struct machine *machine,
perf_event__handler_t process,
- const struct evsel *evsel,
__u16 misc,
const struct build_id *bid,
const char *filename);
@@ -58,7 +57,6 @@ int perf_event__synthesize_mmap2_build_id(const struct perf_tool *tool,
struct perf_sample *sample,
struct machine *machine,
perf_event__handler_t process,
- const struct evsel *evsel,
__u16 misc,
__u32 pid, __u32 tid,
__u64 start, __u64 len, __u64 pgoff,
--
2.53.0.239.g8d8fc8a987-goog