All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Olsa <olsajiri@gmail.com>
To: Shunsuke Nakamura <nakamura.shun@fujitsu.com>
Cc: peterz@infradead.org, mingo@redhat.com, acme@kernel.org,
	mark.rutland@arm.com, alexander.shishkin@linux.intel.com,
	jolsa@redhat.com, namhyung@kernel.org,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org
Subject: Re: [RFC PATCH v2 2/7] libperf: Move 'open_flags' from tools/perf to evsel::open_flags
Date: Wed, 30 Mar 2022 15:50:13 +0200	[thread overview]
Message-ID: <YkRgFdWdW0HyqIno@krava> (raw)
In-Reply-To: <20220325043829.224045-3-nakamura.shun@fujitsu.com>

On Fri, Mar 25, 2022 at 01:38:24PM +0900, Shunsuke Nakamura wrote:
> Move evsel::open_flags to perf_evsel::open_flags, so we can move
> the open_flags interface to libperf.
> 
> Signed-off-by: Shunsuke Nakamura <nakamura.shun@fujitsu.com>
> ---
>  tools/lib/perf/evsel.c                  |  3 ++-
>  tools/lib/perf/include/internal/evsel.h |  2 ++
>  tools/perf/util/evsel.c                 | 16 +++++++++-------
>  tools/perf/util/evsel.h                 |  1 -
>  4 files changed, 13 insertions(+), 9 deletions(-)
> 
> diff --git a/tools/lib/perf/evsel.c b/tools/lib/perf/evsel.c
> index 210ea7c06ce8..6640a333e6d9 100644
> --- a/tools/lib/perf/evsel.c
> +++ b/tools/lib/perf/evsel.c
> @@ -26,6 +26,7 @@ void perf_evsel__init(struct perf_evsel *evsel, struct perf_event_attr *attr,
>  	evsel->attr = *attr;
>  	evsel->idx  = idx;
>  	evsel->leader = evsel;
> +	evsel->open_flags = 0;
>  }
>  
>  struct perf_evsel *perf_evsel__new(struct perf_event_attr *attr)
> @@ -158,7 +159,7 @@ int perf_evsel__open(struct perf_evsel *evsel, struct perf_cpu_map *cpus,
>  
>  			fd = sys_perf_event_open(&evsel->attr,
>  						 threads->map[thread].pid,
> -						 cpu, group_fd, 0);
> +						 cpu, group_fd, evsel->open_flags);

please keep this change just open_flags field move,
this change should go to later patch

jirka

>  
>  			if (fd < 0)
>  				return -errno;
> diff --git a/tools/lib/perf/include/internal/evsel.h b/tools/lib/perf/include/internal/evsel.h
> index cfc9ebd7968e..37a99cf261b3 100644
> --- a/tools/lib/perf/include/internal/evsel.h
> +++ b/tools/lib/perf/include/internal/evsel.h
> @@ -51,6 +51,8 @@ struct perf_evsel {
>  	int			 nr_members;
>  	bool			 system_wide;
>  	int			 idx;
> +
> +	unsigned long		 open_flags;
>  };
>  
>  void perf_evsel__init(struct perf_evsel *evsel, struct perf_event_attr *attr,
> diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
> index 22d3267ce294..52c34552ee76 100644
> --- a/tools/perf/util/evsel.c
> +++ b/tools/perf/util/evsel.c
> @@ -1794,9 +1794,9 @@ 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;
>  
> -	evsel->open_flags = PERF_FLAG_FD_CLOEXEC;
> +	evsel->core.open_flags = PERF_FLAG_FD_CLOEXEC;
>  	if (evsel->cgrp)
> -		evsel->open_flags |= PERF_FLAG_PID_CGROUP;
> +		evsel->core.open_flags |= PERF_FLAG_PID_CGROUP;
>  
>  	return 0;
>  }
> @@ -1814,7 +1814,7 @@ static void evsel__disable_missing_features(struct evsel *evsel)
>  		evsel->core.attr.clockid = 0;
>  	}
>  	if (perf_missing_features.cloexec)
> -		evsel->open_flags &= ~(unsigned long)PERF_FLAG_FD_CLOEXEC;
> +		evsel->core.open_flags &= ~(unsigned long)PERF_FLAG_FD_CLOEXEC;
>  	if (perf_missing_features.mmap2)
>  		evsel->core.attr.mmap2 = 0;
>  	if (evsel->pmu && evsel->pmu->missing_features.exclude_guest)
> @@ -1902,7 +1902,8 @@ bool evsel__detect_missing_features(struct evsel *evsel)
>  		perf_missing_features.clockid = true;
>  		pr_debug2_peo("switching off use_clockid\n");
>  		return true;
> -	} else if (!perf_missing_features.cloexec && (evsel->open_flags & PERF_FLAG_FD_CLOEXEC)) {
> +	} else if (!perf_missing_features.cloexec &&
> +		   (evsel->core.open_flags & PERF_FLAG_FD_CLOEXEC)) {
>  		perf_missing_features.cloexec = true;
>  		pr_debug2_peo("switching off cloexec flag\n");
>  		return true;
> @@ -2029,11 +2030,12 @@ static int evsel__open_cpu(struct evsel *evsel, struct perf_cpu_map *cpus,
>  			test_attr__ready();
>  
>  			pr_debug2_peo("sys_perf_event_open: pid %d  cpu %d  group_fd %d  flags %#lx",
> -				pid, perf_cpu_map__cpu(cpus, idx).cpu, group_fd, evsel->open_flags);
> +				pid, perf_cpu_map__cpu(cpus, idx).cpu, group_fd,
> +				evsel->core.open_flags);
>  
>  			fd = sys_perf_event_open(&evsel->core.attr, pid,
>  						perf_cpu_map__cpu(cpus, idx).cpu,
> -						group_fd, evsel->open_flags);
> +						group_fd, evsel->core.open_flags);
>  
>  			FD(evsel, idx, thread) = fd;
>  
> @@ -2050,7 +2052,7 @@ static int evsel__open_cpu(struct evsel *evsel, struct perf_cpu_map *cpus,
>  			if (unlikely(test_attr__enabled)) {
>  				test_attr__open(&evsel->core.attr, pid,
>  						perf_cpu_map__cpu(cpus, idx),
> -						fd, group_fd, evsel->open_flags);
> +						fd, group_fd, evsel->core.open_flags);
>  			}
>  
>  			pr_debug2_peo(" = %d\n", fd);
> diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
> index 041b42d33bf5..8a545954eec7 100644
> --- a/tools/perf/util/evsel.h
> +++ b/tools/perf/util/evsel.h
> @@ -152,7 +152,6 @@ struct evsel {
>  		struct bperf_leader_bpf *leader_skel;
>  		struct bperf_follower_bpf *follower_skel;
>  	};
> -	unsigned long		open_flags;
>  	int			precise_ip_original;
>  
>  	/* for missing_features */
> -- 
> 2.25.1
> 

  reply	other threads:[~2022-03-30 13:50 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-25  4:38 [RFC PATCH v2 0/7] libperf: Add interface for overflow check of sampling events Shunsuke Nakamura
2022-03-25  4:38 ` [RFC PATCH v2 1/7] libperf tests: Fix typo in the error message Shunsuke Nakamura
2022-03-25 19:52   ` Arnaldo Carvalho de Melo
2022-03-25  4:38 ` [RFC PATCH v2 2/7] libperf: Move 'open_flags' from tools/perf to evsel::open_flags Shunsuke Nakamura
2022-03-30 13:50   ` Jiri Olsa [this message]
2022-04-11  8:27     ` nakamura.shun
2022-03-25  4:38 ` [RFC PATCH v2 3/7] libperf: Add perf_evsel__{refresh, period}() functions Shunsuke Nakamura
2022-03-30 13:50   ` Jiri Olsa
2022-04-11  8:29     ` nakamura.shun
2022-03-25  4:38 ` [RFC PATCH v2 4/7] libperf: Introduce perf_{evsel, evlist}__open_opt with extensible struct opts Shunsuke Nakamura
2022-03-30 13:50   ` Jiri Olsa
2022-04-11  8:31     ` nakamura.shun
2022-03-30 13:50   ` Jiri Olsa
2022-04-11  8:34     ` nakamura.shun
2022-03-25  4:38 ` [RFC PATCH v2 5/7] libperf: Add perf_evsel__check_overflow() functions Shunsuke Nakamura
2022-03-30 13:50   ` Jiri Olsa
2022-04-11  8:35     ` nakamura.shun
2022-03-25  4:38 ` [RFC PATCH v2 6/7] libperf test: Add test_stat_overflow() Shunsuke Nakamura
2022-03-25  4:38 ` [RFC PATCH v2 7/7] libperf test: Add test_stat_overflow_event() Shunsuke Nakamura
2022-03-30 13:50 ` [RFC PATCH v2 0/7] libperf: Add interface for overflow check of sampling events Jiri Olsa
2022-04-11  8:23   ` nakamura.shun
2022-04-19 20:15     ` Jiri Olsa
2022-04-20  8:22       ` nakamura.shun

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=YkRgFdWdW0HyqIno@krava \
    --to=olsajiri@gmail.com \
    --cc=acme@kernel.org \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=nakamura.shun@fujitsu.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    /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.