All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: "Peter Zijlstra" <peterz@infradead.org>,
	"Ingo Molnar" <mingo@redhat.com>,
	"Namhyung Kim" <namhyung@kernel.org>,
	"Mark Rutland" <mark.rutland@arm.com>,
	"Alexander Shishkin" <alexander.shishkin@linux.intel.com>,
	"Jiri Olsa" <jolsa@kernel.org>,
	"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@linaro.org>,
	"Mike Leach" <mike.leach@linaro.org>,
	"Leo Yan" <leo.yan@linux.dev>,
	"Ravi Bangoria" <ravi.bangoria@amd.com>,
	"Weilin Wang" <weilin.wang@intel.com>,
	"Jing Zhang" <renyu.zj@linux.alibaba.com>,
	"Xu Yang" <xu.yang_2@nxp.com>,
	"Sandipan Das" <sandipan.das@amd.com>,
	"Benjamin Gray" <bgray@linux.ibm.com>,
	"Athira Jajeev" <atrajeev@linux.vnet.ibm.com>,
	"Howard Chu" <howardchu95@gmail.com>,
	"Dominique Martinet" <asmadeus@codewreck.org>,
	"Yang Jihong" <yangjihong@bytedance.com>,
	"Colin Ian King" <colin.i.king@gmail.com>,
	"Veronika Molnarova" <vmolnaro@redhat.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	"Oliver Upton" <oliver.upton@linux.dev>,
	"Changbin Du" <changbin.du@huawei.com>,
	"Ze Gao" <zegao2021@gmail.com>, "Andi Kleen" <ak@linux.intel.com>,
	"Clément Le Goffic" <clement.legoffic@foss.st.com>,
	"Sun Haiyong" <sunhaiyong@loongson.cn>,
	"Junhao He" <hejunhao3@huawei.com>,
	"Tiezhu Yang" <yangtiezhu@loongson.cn>,
	"Yicong Yang" <yangyicong@hisilicon.com>,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v1 03/15] perf evsel: Add accessor for tool_event
Date: Wed, 11 Sep 2024 11:28:49 -0300	[thread overview]
Message-ID: <ZuGpIQmfmC1t3xt7@x1> (raw)
In-Reply-To: <20240907050830.6752-4-irogers@google.com>

On Fri, Sep 06, 2024 at 10:08:18PM -0700, Ian Rogers wrote:
> Currently tool events use a dedicated variable within the evsel. Later
> changes will move this to the unused struct perf_event_attr config for
> these events. Add an accessor to allow the later change to be well
> typed and avoid changing all uses.

Thanks, applied to perf-tools-next,

- Arnaldo
 
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
>  tools/perf/builtin-stat.c     |  6 +++---
>  tools/perf/util/evsel.c       | 24 ++++++++++++------------
>  tools/perf/util/evsel.h       |  5 +++++
>  tools/perf/util/stat-shadow.c |  2 +-
>  4 files changed, 21 insertions(+), 16 deletions(-)
> 
> diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
> index cf985cdb9a6e..689a3d43c258 100644
> --- a/tools/perf/builtin-stat.c
> +++ b/tools/perf/builtin-stat.c
> @@ -294,14 +294,14 @@ static int read_single_counter(struct evsel *counter, int cpu_map_idx, int threa
>  	 * terminates. Use the wait4 values in that case.
>  	 */
>  	if (err && cpu_map_idx == 0 &&
> -	    (counter->tool_event == PERF_TOOL_USER_TIME ||
> -	     counter->tool_event == PERF_TOOL_SYSTEM_TIME)) {
> +	    (evsel__tool_event(counter) == PERF_TOOL_USER_TIME ||
> +	     evsel__tool_event(counter) == PERF_TOOL_SYSTEM_TIME)) {
>  		u64 val, *start_time;
>  		struct perf_counts_values *count =
>  			perf_counts(counter->counts, cpu_map_idx, thread);
>  
>  		start_time = xyarray__entry(counter->start_times, cpu_map_idx, thread);
> -		if (counter->tool_event == PERF_TOOL_USER_TIME)
> +		if (evsel__tool_event(counter) == PERF_TOOL_USER_TIME)
>  			val = ru_stats.ru_utime_usec_stat.mean;
>  		else
>  			val = ru_stats.ru_stime_usec_stat.mean;
> diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
> index 49cc71511c0c..dbf9c8cee3c5 100644
> --- a/tools/perf/util/evsel.c
> +++ b/tools/perf/util/evsel.c
> @@ -773,7 +773,7 @@ const char *evsel__name(struct evsel *evsel)
>  
>  	case PERF_TYPE_SOFTWARE:
>  		if (evsel__is_tool(evsel))
> -			evsel__tool_name(evsel->tool_event, bf, sizeof(bf));
> +			evsel__tool_name(evsel__tool_event(evsel), bf, sizeof(bf));
>  		else
>  			evsel__sw_name(evsel, bf, sizeof(bf));
>  		break;
> @@ -811,7 +811,7 @@ const char *evsel__metric_id(const struct evsel *evsel)
>  		return evsel->metric_id;
>  
>  	if (evsel__is_tool(evsel))
> -		return perf_tool_event__to_str(evsel->tool_event);
> +		return perf_tool_event__to_str(evsel__tool_event(evsel));
>  
>  	return "unknown";
>  }
> @@ -1503,8 +1503,8 @@ void evsel__exit(struct evsel *evsel)
>  	evsel->per_pkg_mask = NULL;
>  	zfree(&evsel->metric_events);
>  	perf_evsel__object.fini(evsel);
> -	if (evsel->tool_event == PERF_TOOL_SYSTEM_TIME ||
> -	    evsel->tool_event == PERF_TOOL_USER_TIME)
> +	if (evsel__tool_event(evsel) == PERF_TOOL_SYSTEM_TIME ||
> +	    evsel__tool_event(evsel) == PERF_TOOL_USER_TIME)
>  		xyarray__delete(evsel->start_times);
>  }
>  
> @@ -1785,7 +1785,7 @@ static int evsel__read_tool(struct evsel *evsel, int cpu_map_idx, int thread)
>  
>  	count = perf_counts(evsel->counts, cpu_map_idx, thread);
>  
> -	switch (evsel->tool_event) {
> +	switch (evsel__tool_event(evsel)) {
>  	case PERF_TOOL_DURATION_TIME:
>  		/*
>  		 * Pretend duration_time is only on the first CPU and thread, or
> @@ -1800,7 +1800,7 @@ static int evsel__read_tool(struct evsel *evsel, int cpu_map_idx, int thread)
>  		break;
>  	case PERF_TOOL_USER_TIME:
>  	case PERF_TOOL_SYSTEM_TIME: {
> -		bool system = evsel->tool_event == PERF_TOOL_SYSTEM_TIME;
> +		bool system = evsel__tool_event(evsel) == PERF_TOOL_SYSTEM_TIME;
>  
>  		start_time = xyarray__entry(evsel->start_times, cpu_map_idx, thread);
>  		fd = FD(evsel, cpu_map_idx, thread);
> @@ -2072,8 +2072,8 @@ static int __evsel__prepare_open(struct evsel *evsel, struct perf_cpu_map *cpus,
>  	    perf_evsel__alloc_fd(&evsel->core, perf_cpu_map__nr(cpus), nthreads) < 0)
>  		return -ENOMEM;
>  
> -	if ((evsel->tool_event == PERF_TOOL_SYSTEM_TIME ||
> -	     evsel->tool_event == PERF_TOOL_USER_TIME) &&
> +	if ((evsel__tool_event(evsel) == PERF_TOOL_SYSTEM_TIME ||
> +	     evsel__tool_event(evsel) == PERF_TOOL_USER_TIME) &&
>  	    !evsel->start_times) {
>  		evsel->start_times = xyarray__new(perf_cpu_map__nr(cpus), nthreads, sizeof(__u64));
>  		if (!evsel->start_times)
> @@ -2262,7 +2262,7 @@ static int evsel__open_cpu(struct evsel *evsel, struct perf_cpu_map *cpus,
>  	int pid = -1, err, old_errno;
>  	enum rlimit_action set_rlimit = NO_CHANGE;
>  
> -	if (evsel->tool_event == PERF_TOOL_DURATION_TIME) {
> +	if (evsel__tool_event(evsel) == PERF_TOOL_DURATION_TIME) {
>  		if (evsel->core.attr.sample_period) /* no sampling */
>  			return -EINVAL;
>  		evsel->start_time = rdclock();
> @@ -2304,9 +2304,9 @@ static int evsel__open_cpu(struct evsel *evsel, struct perf_cpu_map *cpus,
>  			if (!evsel->cgrp && !evsel->core.system_wide)
>  				pid = perf_thread_map__pid(threads, thread);
>  
> -			if (evsel->tool_event == PERF_TOOL_USER_TIME ||
> -			    evsel->tool_event == PERF_TOOL_SYSTEM_TIME) {
> -				bool system = evsel->tool_event == PERF_TOOL_SYSTEM_TIME;
> +			if (evsel__tool_event(evsel) == PERF_TOOL_USER_TIME ||
> +			    evsel__tool_event(evsel) == PERF_TOOL_SYSTEM_TIME) {
> +				bool system = evsel__tool_event(evsel) == PERF_TOOL_SYSTEM_TIME;
>  				__u64 *start_time = NULL;
>  
>  				if (evsel->core.attr.sample_period) {
> diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
> index 15acf293e12a..15e745a9a798 100644
> --- a/tools/perf/util/evsel.h
> +++ b/tools/perf/util/evsel.h
> @@ -330,6 +330,11 @@ static inline bool evsel__is_retire_lat(const struct evsel *evsel)
>  	return evsel->retire_lat;
>  }
>  
> +static inline enum perf_tool_event evsel__tool_event(const struct evsel *evsel)
> +{
> +	return evsel->tool_event;
> +}
> +
>  const char *evsel__group_name(struct evsel *evsel);
>  int evsel__group_desc(struct evsel *evsel, char *buf, size_t size);
>  
> diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c
> index 6bb975e46de3..99376c12dd8e 100644
> --- a/tools/perf/util/stat-shadow.c
> +++ b/tools/perf/util/stat-shadow.c
> @@ -380,7 +380,7 @@ static int prepare_metric(const struct metric_expr *mexp,
>  			struct stats *stats;
>  			double scale;
>  
> -			switch (metric_events[i]->tool_event) {
> +			switch (evsel__tool_event(metric_events[i])) {
>  			case PERF_TOOL_DURATION_TIME:
>  				stats = &walltime_nsecs_stats;
>  				scale = 1e-9;
> -- 
> 2.46.0.469.g59c65b2a67-goog

  reply	other threads:[~2024-09-11 14:28 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-07  5:08 [PATCH v1 00/15] Tool and hwmon PMUs Ian Rogers
2024-09-07  5:08 ` [PATCH v1 01/15] perf list: Avoid potential out of bounds memory read Ian Rogers
2024-09-11 14:26   ` Arnaldo Carvalho de Melo
2024-09-07  5:08 ` [PATCH v1 02/15] perf pmus: Fake PMU clean up Ian Rogers
2024-09-11 14:28   ` Arnaldo Carvalho de Melo
2024-09-07  5:08 ` [PATCH v1 03/15] perf evsel: Add accessor for tool_event Ian Rogers
2024-09-11 14:28   ` Arnaldo Carvalho de Melo [this message]
2024-09-07  5:08 ` [PATCH v1 04/15] perf pmu: To info add event_type_desc Ian Rogers
2024-09-07  5:08 ` [PATCH v1 05/15] perf pmu: Allow hardcoded terms to be applied to attributes Ian Rogers
2024-09-11 14:31   ` Arnaldo Carvalho de Melo
2024-09-07  5:08 ` [PATCH v1 06/15] perf parse-events: Expose/rename config_term_name Ian Rogers
2024-09-07  5:08 ` [PATCH v1 07/15] perf tool_pmu: Factor tool events into their own PMU Ian Rogers
2024-09-07  5:08 ` [PATCH v1 08/15] perf tool_pmu: Rename enum perf_tool_event to tool_pmu_event Ian Rogers
2024-09-07  5:08 ` [PATCH v1 09/15] perf tool_pmu: Rename perf_tool_event__* to tool_pmu__* Ian Rogers
2024-09-07  5:08 ` [PATCH v1 10/15] perf tool_pmu: Move expr literals to tool_pmu Ian Rogers
2024-09-07  5:08 ` [PATCH v1 11/15] perf jevents: Add tool event json under a common architecture Ian Rogers
2024-09-07  5:08 ` [PATCH v1 12/15] perf tool_pmu: Switch to standard pmu functions and json descriptions Ian Rogers
2024-09-10  5:47   ` Namhyung Kim
2024-09-07  5:08 ` [PATCH v1 13/15] perf tests: Add tool PMU test Ian Rogers
2024-09-10  5:50   ` Namhyung Kim
2024-09-10 15:59     ` Ian Rogers
2024-09-07  5:08 ` [PATCH v1 14/15] perf hwmon_pmu: Add a tool PMU exposing events from hwmon in sysfs Ian Rogers
2024-09-10  6:56   ` Namhyung Kim
2024-09-10 17:32     ` Ian Rogers
2024-09-07  5:08 ` [PATCH v1 15/15] perf docs: Document tool and hwmon events Ian Rogers
2024-09-10  2:21 ` [PATCH v1 00/15] Tool and hwmon PMUs Ian Rogers
2024-09-10  3:36   ` Guenter Roeck

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=ZuGpIQmfmC1t3xt7@x1 \
    --to=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=asmadeus@codewreck.org \
    --cc=atrajeev@linux.vnet.ibm.com \
    --cc=bgray@linux.ibm.com \
    --cc=changbin.du@huawei.com \
    --cc=clement.legoffic@foss.st.com \
    --cc=colin.i.king@gmail.com \
    --cc=hejunhao3@huawei.com \
    --cc=howardchu95@gmail.com \
    --cc=irogers@google.com \
    --cc=james.clark@linaro.org \
    --cc=john.g.garry@oracle.com \
    --cc=jolsa@kernel.org \
    --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=linux@treblig.org \
    --cc=mark.rutland@arm.com \
    --cc=mike.leach@linaro.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=oliver.upton@linux.dev \
    --cc=peterz@infradead.org \
    --cc=ravi.bangoria@amd.com \
    --cc=renyu.zj@linux.alibaba.com \
    --cc=sandipan.das@amd.com \
    --cc=sunhaiyong@loongson.cn \
    --cc=vmolnaro@redhat.com \
    --cc=weilin.wang@intel.com \
    --cc=will@kernel.org \
    --cc=xu.yang_2@nxp.com \
    --cc=yangjihong@bytedance.com \
    --cc=yangtiezhu@loongson.cn \
    --cc=yangyicong@hisilicon.com \
    --cc=zegao2021@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.