libperf: Move 'leader' from tools/perf to perf_evsel::leader
Move evsel::leader to perf_evsel::leader, so we can move the group
interface to libperf.
Also add several evsel helpers to ease up the transition:
struct evsel *evsel__leader(struct evsel *evsel);
- get leader evsel
bool evsel__has_leader(struct evsel *evsel, struct evsel *leader);
- true if evsel has leader as leader
bool evsel__is_leader(struct evsel *evsel);
- true if evsel is itw own leader
void evsel__set_leader(struct evsel *evsel, struct evsel *leader);
- set leader for evsel
Committer notes:
Fix this when building with 'make BUILD_BPF_SKEL=1'
tools/perf/util/bpf_counter.c
- if (evsel->leader->core.nr_members > 1) {
+ if (evsel->core.leader->nr_members > 1) {
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Requested-by: Shunsuke Nakamura <nakamura.shun@fujitsu.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/20210706151704.73662-4-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
38fe0e0156
commit
fba7c86601
@@ -248,7 +248,7 @@ static void evlist__check_cpu_maps(struct evlist *evlist)
|
||||
evlist__warn_hybrid_group(evlist);
|
||||
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
leader = evsel->leader;
|
||||
leader = evsel__leader(evsel);
|
||||
|
||||
/* Check that leader matches cpus with each member. */
|
||||
if (leader == evsel)
|
||||
@@ -269,10 +269,10 @@ static void evlist__check_cpu_maps(struct evlist *evlist)
|
||||
}
|
||||
|
||||
for_each_group_evsel(pos, leader) {
|
||||
pos->leader = pos;
|
||||
evsel__set_leader(pos, pos);
|
||||
pos->core.nr_members = 0;
|
||||
}
|
||||
evsel->leader->core.nr_members = 0;
|
||||
evsel->core.leader->nr_members = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -745,8 +745,8 @@ static enum counter_recovery stat_handle_error(struct evsel *counter)
|
||||
*/
|
||||
counter->errored = true;
|
||||
|
||||
if ((counter->leader != counter) ||
|
||||
!(counter->leader->core.nr_members > 1))
|
||||
if ((evsel__leader(counter) != counter) ||
|
||||
!(counter->core.leader->nr_members > 1))
|
||||
return COUNTER_SKIP;
|
||||
} else if (evsel__fallback(counter, errno, msg, sizeof(msg))) {
|
||||
if (verbose > 0)
|
||||
@@ -839,7 +839,7 @@ try_again:
|
||||
* Don't close here because we're in the wrong affinity.
|
||||
*/
|
||||
if ((errno == EINVAL || errno == EBADF) &&
|
||||
counter->leader != counter &&
|
||||
evsel__leader(counter) != counter &&
|
||||
counter->weak_group) {
|
||||
evlist__reset_weak_group(evsel_list, counter, false);
|
||||
assert(counter->reset_group);
|
||||
|
||||
Reference in New Issue
Block a user