Messages in this thread | | | Date | Wed, 30 Mar 2022 15:50:13 +0200 | From | Jiri Olsa <> | Subject | Re: [RFC PATCH v2 2/7] libperf: Move 'open_flags' from tools/perf to evsel::open_flags |
| |
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 >
| |