[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Z89O8eaFpltNBtUG@x1>
Date: Mon, 10 Mar 2025 17:43:29 -0300
From: Arnaldo Carvalho de Melo <acme@...nel.org>
To: Ian Rogers <irogers@...gle.com>
Cc: Peter Zijlstra <peterz@...radead.org>, Ingo Molnar <mingo@...hat.com>,
Namhyung Kim <namhyung@...nel.org>,
Mark Rutland <mark.rutland@....com>,
Alexander Shishkin <alexander.shishkin@...ux.intel.com>,
Jiri Olsa <jolsa@...nel.org>,
Adrian Hunter <adrian.hunter@...el.com>,
Kan Liang <kan.liang@...ux.intel.com>,
Yicong Yang <yangyicong@...ilicon.com>,
James Clark <james.clark@...aro.org>,
"Dr. David Alan Gilbert" <linux@...blig.org>,
Levi Yun <yeoreum.yun@....com>, Ze Gao <zegao2021@...il.com>,
Weilin Wang <weilin.wang@...el.com>, Xu Yang <xu.yang_2@....com>,
linux-perf-users@...r.kernel.org, linux-kernel@...r.kernel.org,
Howard Chu <howardchu95@...il.com>
Subject: Re: [PATCH v2 03/11] perf evsel: tp_format accessing improvements
On Fri, Feb 28, 2025 at 02:23:00PM -0800, Ian Rogers wrote:
> Ensure evsel__clone copies the tp_sys and tp_name variables.
> In evsel__tp_format, if tp_sys isn't set, use the config value to find
> the tp_format. This succeeds in python code where pyrf__tracepoint has
> already found the format.
Here those two fields were introduced but evsel__clone() wasn't update
to clone those:
Fixes: 6c8310e8380d472c ("perf evsel: Allow evsel__newtp without libtraceevent")
Reviewed-by: Arnaldo Carvalho de Melo <acme@...hat.com>
- Arnaldo
> Reviewed-by: Howard Chu <howardchu95@...il.com>
> Signed-off-by: Ian Rogers <irogers@...gle.com>
> ---
> tools/perf/util/evsel.c | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
> index 4a0ef095db92..1974395492d7 100644
> --- a/tools/perf/util/evsel.c
> +++ b/tools/perf/util/evsel.c
> @@ -521,6 +521,16 @@ struct evsel *evsel__clone(struct evsel *dest, struct evsel *orig)
> }
> evsel->cgrp = cgroup__get(orig->cgrp);
> #ifdef HAVE_LIBTRACEEVENT
> + if (orig->tp_sys) {
> + evsel->tp_sys = strdup(orig->tp_sys);
> + if (evsel->tp_sys == NULL)
> + goto out_err;
> + }
> + if (orig->tp_name) {
> + evsel->tp_name = strdup(orig->tp_name);
> + if (evsel->tp_name == NULL)
> + goto out_err;
> + }
> evsel->tp_format = orig->tp_format;
> #endif
> evsel->handler = orig->handler;
> @@ -644,7 +654,11 @@ struct tep_event *evsel__tp_format(struct evsel *evsel)
> if (evsel->core.attr.type != PERF_TYPE_TRACEPOINT)
> return NULL;
>
> - tp_format = trace_event__tp_format(evsel->tp_sys, evsel->tp_name);
> + if (!evsel->tp_sys)
> + tp_format = trace_event__tp_format_id(evsel->core.attr.config);
> + else
> + tp_format = trace_event__tp_format(evsel->tp_sys, evsel->tp_name);
> +
> if (IS_ERR(tp_format)) {
> int err = -PTR_ERR(evsel->tp_format);
>
> --
> 2.48.1.711.g2feabab25a-goog
Powered by blists - more mailing lists