perf auxtrace: Add auxtrace_synth_id_range_start() helper
authortanze <tanze@kylinos.cn>
Fri, 24 Oct 2025 08:56:25 +0000 (16:56 +0800)
committerNamhyung Kim <namhyung@kernel.org>
Sun, 26 Oct 2025 00:44:57 +0000 (17:44 -0700)
To avoid hardcoding the offset value for synthetic event IDs
in multiple auxtrace modules (arm-spe, cs-etm, intel-pt, etc.),
and to improve code reusability, this patch unifies
the handling of the ID offset via a dedicated helper function.

Signed-off-by: tanze <tanze@kylinos.cn>
Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
Tested-by: Leo Yan <leo.yan@arm.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/util/arm-spe.c
tools/perf/util/auxtrace.c
tools/perf/util/auxtrace.h
tools/perf/util/cs-etm.c
tools/perf/util/intel-bts.c
tools/perf/util/intel-pt.c
tools/perf/util/powerpc-vpadtl.c

index 9561951..614ce03 100644 (file)
@@ -1733,10 +1733,7 @@ arm_spe_synth_events(struct arm_spe *spe, struct perf_session *session)
        attr.sample_period = spe->synth_opts.period;
 
        /* create new id val to be a fixed offset from evsel id */
-       id = evsel->core.id[0] + 1000000000;
-
-       if (!id)
-               id = 1;
+       id = auxtrace_synth_id_range_start(evsel);
 
        if (spe->synth_opts.flc) {
                spe->sample_flc = true;
index 1539c1d..35f4745 100644 (file)
 #include <internal/lib.h>
 #include "util/sample.h"
 
+#define AUXTRACE_SYNTH_EVENT_ID_OFFSET 1000000000ULL
+
+/*
+ * Event IDs are allocated sequentially, so a big offset from any
+ * existing ID will reach a unused range.
+ */
+u64 auxtrace_synth_id_range_start(struct evsel *evsel)
+{
+       u64 id = evsel->core.id[0] + AUXTRACE_SYNTH_EVENT_ID_OFFSET;
+
+       if (!id)
+               id = 1;
+
+       return id;
+}
+
 /*
  * Make a group from 'leader' to 'last', requiring that the events were not
  * already grouped to a different leader.
index e0a5b39..ed3a1aa 100644 (file)
@@ -648,6 +648,7 @@ void auxtrace__free_events(struct perf_session *session);
 void auxtrace__free(struct perf_session *session);
 bool auxtrace__evsel_is_auxtrace(struct perf_session *session,
                                 struct evsel *evsel);
+u64 auxtrace_synth_id_range_start(struct evsel *evsel);
 
 #define ITRACE_HELP \
 "                              i[period]:              synthesize instructions events\n" \
index 30f4bb3..62812be 100644 (file)
@@ -1726,10 +1726,7 @@ static int cs_etm__synth_events(struct cs_etm_auxtrace *etm,
        attr.read_format = evsel->core.attr.read_format;
 
        /* create new id val to be a fixed offset from evsel id */
-       id = evsel->core.id[0] + 1000000000;
-
-       if (!id)
-               id = 1;
+       id = auxtrace_synth_id_range_start(evsel);
 
        if (etm->synth_opts.branches) {
                attr.config = PERF_COUNT_HW_BRANCH_INSTRUCTIONS;
index 3625c62..3822553 100644 (file)
@@ -777,9 +777,7 @@ static int intel_bts_synth_events(struct intel_bts *bts,
        attr.sample_id_all = evsel->core.attr.sample_id_all;
        attr.read_format = evsel->core.attr.read_format;
 
-       id = evsel->core.id[0] + 1000000000;
-       if (!id)
-               id = 1;
+       id = auxtrace_synth_id_range_start(evsel);
 
        if (bts->synth_opts.branches) {
                attr.config = PERF_COUNT_HW_BRANCH_INSTRUCTIONS;
index 9b1011f..fc9eec8 100644 (file)
@@ -3987,9 +3987,7 @@ static int intel_pt_synth_events(struct intel_pt *pt,
        attr.sample_id_all = evsel->core.attr.sample_id_all;
        attr.read_format = evsel->core.attr.read_format;
 
-       id = evsel->core.id[0] + 1000000000;
-       if (!id)
-               id = 1;
+       id = auxtrace_synth_id_range_start(evsel);
 
        if (pt->synth_opts.branches) {
                attr.config = PERF_COUNT_HW_BRANCH_INSTRUCTIONS;
index 39a3fb3..bfa4156 100644 (file)
@@ -656,9 +656,7 @@ powerpc_vpadtl_synth_events(struct powerpc_vpadtl *vpa, struct perf_session *ses
        attr.config = PERF_SYNTH_POWERPC_VPA_DTL;
 
        /* create new id val to be a fixed offset from evsel id */
-       id = evsel->core.id[0] + 1000000000;
-       if (!id)
-               id = 1;
+       id = auxtrace_synth_id_range_start(evsel);
 
        err = perf_session__deliver_synth_attr_event(session, &attr, id);
        if (err)