Skip to content

Commit fba7c86

Browse files
Jiri Olsaacmel
authored andcommitted
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>
1 parent 38fe0e0 commit fba7c86

File tree

20 files changed

+103
-77
lines changed

20 files changed

+103
-77
lines changed

tools/lib/perf/evsel.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ void perf_evsel__init(struct perf_evsel *evsel, struct perf_event_attr *attr,
2424
INIT_LIST_HEAD(&evsel->node);
2525
evsel->attr = *attr;
2626
evsel->idx = idx;
27+
evsel->leader = evsel;
2728
}
2829

2930
struct perf_evsel *perf_evsel__new(struct perf_event_attr *attr)

tools/lib/perf/include/internal/evsel.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ struct perf_evsel {
4545
struct xyarray *sample_id;
4646
u64 *id;
4747
u32 ids;
48+
struct perf_evsel *leader;
4849

4950
/* parse modifier helper */
5051
int nr_members;

tools/perf/builtin-record.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -926,7 +926,7 @@ static int record__open(struct record *rec)
926926
goto try_again;
927927
}
928928
if ((errno == EINVAL || errno == EBADF) &&
929-
pos->leader != pos &&
929+
pos->core.leader != &pos->core &&
930930
pos->weak_group) {
931931
pos = evlist__reset_weak_group(evlist, pos, true);
932932
goto try_again;

tools/perf/builtin-report.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@ static int report__collapse_hists(struct report *rep)
677677

678678
/* Non-group events are considered as leader */
679679
if (symbol_conf.event_group && !evsel__is_group_leader(pos)) {
680-
struct hists *leader_hists = evsel__hists(pos->leader);
680+
struct hists *leader_hists = evsel__hists(evsel__leader(pos));
681681

682682
hists__match(leader_hists, hists);
683683
hists__link(leader_hists, hists);

tools/perf/builtin-script.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1899,6 +1899,7 @@ static void perf_sample__fprint_metric(struct perf_script *script,
18991899
struct perf_sample *sample,
19001900
FILE *fp)
19011901
{
1902+
struct evsel *leader = evsel__leader(evsel);
19021903
struct perf_stat_output_ctx ctx = {
19031904
.print_metric = script_print_metric,
19041905
.new_line = script_new_line,
@@ -1915,24 +1916,24 @@ static void perf_sample__fprint_metric(struct perf_script *script,
19151916

19161917
if (!evsel->stats)
19171918
evlist__alloc_stats(script->session->evlist, false);
1918-
if (evsel_script(evsel->leader)->gnum++ == 0)
1919+
if (evsel_script(leader)->gnum++ == 0)
19191920
perf_stat__reset_shadow_stats();
19201921
val = sample->period * evsel->scale;
19211922
perf_stat__update_shadow_stats(evsel,
19221923
val,
19231924
sample->cpu,
19241925
&rt_stat);
19251926
evsel_script(evsel)->val = val;
1926-
if (evsel_script(evsel->leader)->gnum == evsel->leader->core.nr_members) {
1927-
for_each_group_member (ev2, evsel->leader) {
1927+
if (evsel_script(leader)->gnum == leader->core.nr_members) {
1928+
for_each_group_member (ev2, leader) {
19281929
perf_stat__print_shadow_stats(&stat_config, ev2,
19291930
evsel_script(ev2)->val,
19301931
sample->cpu,
19311932
&ctx,
19321933
NULL,
19331934
&rt_stat);
19341935
}
1935-
evsel_script(evsel->leader)->gnum = 0;
1936+
evsel_script(leader)->gnum = 0;
19361937
}
19371938
}
19381939

tools/perf/builtin-stat.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ static void evlist__check_cpu_maps(struct evlist *evlist)
248248
evlist__warn_hybrid_group(evlist);
249249

250250
evlist__for_each_entry(evlist, evsel) {
251-
leader = evsel->leader;
251+
leader = evsel__leader(evsel);
252252

253253
/* Check that leader matches cpus with each member. */
254254
if (leader == evsel)
@@ -269,10 +269,10 @@ static void evlist__check_cpu_maps(struct evlist *evlist)
269269
}
270270

271271
for_each_group_evsel(pos, leader) {
272-
pos->leader = pos;
272+
evsel__set_leader(pos, pos);
273273
pos->core.nr_members = 0;
274274
}
275-
evsel->leader->core.nr_members = 0;
275+
evsel->core.leader->nr_members = 0;
276276
}
277277
}
278278

@@ -745,8 +745,8 @@ static enum counter_recovery stat_handle_error(struct evsel *counter)
745745
*/
746746
counter->errored = true;
747747

748-
if ((counter->leader != counter) ||
749-
!(counter->leader->core.nr_members > 1))
748+
if ((evsel__leader(counter) != counter) ||
749+
!(counter->core.leader->nr_members > 1))
750750
return COUNTER_SKIP;
751751
} else if (evsel__fallback(counter, errno, msg, sizeof(msg))) {
752752
if (verbose > 0)
@@ -839,7 +839,7 @@ static int __run_perf_stat(int argc, const char **argv, int run_idx)
839839
* Don't close here because we're in the wrong affinity.
840840
*/
841841
if ((errno == EINVAL || errno == EBADF) &&
842-
counter->leader != counter &&
842+
evsel__leader(counter) != counter &&
843843
counter->weak_group) {
844844
evlist__reset_weak_group(evsel_list, counter, false);
845845
assert(counter->reset_group);

tools/perf/builtin-top.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ static void perf_top__resort_hists(struct perf_top *t)
301301

302302
/* Non-group events are considered as leader */
303303
if (symbol_conf.event_group && !evsel__is_group_leader(pos)) {
304-
struct hists *leader_hists = evsel__hists(pos->leader);
304+
struct hists *leader_hists = evsel__hists(evsel__leader(pos));
305305

306306
hists__match(leader_hists, hists);
307307
hists__link(leader_hists, hists);

tools/perf/tests/parse-events.c

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -698,7 +698,7 @@ static int test__group1(struct evlist *evlist)
698698
TEST_ASSERT_VAL("wrong exclude guest", evsel->core.attr.exclude_guest);
699699
TEST_ASSERT_VAL("wrong exclude host", !evsel->core.attr.exclude_host);
700700
TEST_ASSERT_VAL("wrong precise_ip", evsel->core.attr.precise_ip == 2);
701-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
701+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
702702
TEST_ASSERT_VAL("wrong group_idx", evsel__group_idx(evsel) == 1);
703703
TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
704704

@@ -739,7 +739,7 @@ static int test__group2(struct evlist *evlist)
739739
TEST_ASSERT_VAL("wrong exclude guest", evsel->core.attr.exclude_guest);
740740
TEST_ASSERT_VAL("wrong exclude host", !evsel->core.attr.exclude_host);
741741
TEST_ASSERT_VAL("wrong precise_ip", !evsel->core.attr.precise_ip);
742-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
742+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
743743
TEST_ASSERT_VAL("wrong group_idx", evsel__group_idx(evsel) == 1);
744744
TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
745745

@@ -798,7 +798,7 @@ static int test__group3(struct evlist *evlist __maybe_unused)
798798
TEST_ASSERT_VAL("wrong exclude guest", evsel->core.attr.exclude_guest);
799799
TEST_ASSERT_VAL("wrong exclude host", !evsel->core.attr.exclude_host);
800800
TEST_ASSERT_VAL("wrong precise_ip", evsel->core.attr.precise_ip == 3);
801-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
801+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
802802
TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
803803
TEST_ASSERT_VAL("wrong group_idx", evsel__group_idx(evsel) == 1);
804804
TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
@@ -831,7 +831,7 @@ static int test__group3(struct evlist *evlist __maybe_unused)
831831
TEST_ASSERT_VAL("wrong exclude guest", !evsel->core.attr.exclude_guest);
832832
TEST_ASSERT_VAL("wrong exclude host", evsel->core.attr.exclude_host);
833833
TEST_ASSERT_VAL("wrong precise_ip", !evsel->core.attr.precise_ip);
834-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
834+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
835835
TEST_ASSERT_VAL("wrong group_idx", evsel__group_idx(evsel) == 1);
836836
TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
837837

@@ -889,7 +889,7 @@ static int test__group4(struct evlist *evlist __maybe_unused)
889889
TEST_ASSERT_VAL("wrong exclude guest", evsel->core.attr.exclude_guest);
890890
TEST_ASSERT_VAL("wrong exclude host", !evsel->core.attr.exclude_host);
891891
TEST_ASSERT_VAL("wrong precise_ip", evsel->core.attr.precise_ip == 2);
892-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
892+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
893893
TEST_ASSERT_VAL("wrong group_idx", evsel__group_idx(evsel) == 1);
894894
TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
895895

@@ -931,7 +931,7 @@ static int test__group5(struct evlist *evlist __maybe_unused)
931931
TEST_ASSERT_VAL("wrong exclude guest", !evsel->core.attr.exclude_guest);
932932
TEST_ASSERT_VAL("wrong exclude host", evsel->core.attr.exclude_host);
933933
TEST_ASSERT_VAL("wrong precise_ip", !evsel->core.attr.precise_ip);
934-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
934+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
935935
TEST_ASSERT_VAL("wrong group_idx", evsel__group_idx(evsel) == 1);
936936
TEST_ASSERT_VAL("wrong sample_read", !evsel->sample_read);
937937

@@ -963,7 +963,7 @@ static int test__group5(struct evlist *evlist __maybe_unused)
963963
TEST_ASSERT_VAL("wrong exclude guest", !evsel->core.attr.exclude_guest);
964964
TEST_ASSERT_VAL("wrong exclude host", evsel->core.attr.exclude_host);
965965
TEST_ASSERT_VAL("wrong precise_ip", !evsel->core.attr.precise_ip);
966-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
966+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
967967
TEST_ASSERT_VAL("wrong group_idx", evsel__group_idx(evsel) == 1);
968968

969969
/* cycles */
@@ -1016,7 +1016,7 @@ static int test__group_gh1(struct evlist *evlist)
10161016
TEST_ASSERT_VAL("wrong exclude guest", !evsel->core.attr.exclude_guest);
10171017
TEST_ASSERT_VAL("wrong exclude host", !evsel->core.attr.exclude_host);
10181018
TEST_ASSERT_VAL("wrong precise_ip", !evsel->core.attr.precise_ip);
1019-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1019+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
10201020
TEST_ASSERT_VAL("wrong group_idx", evsel__group_idx(evsel) == 1);
10211021

10221022
return 0;
@@ -1056,7 +1056,7 @@ static int test__group_gh2(struct evlist *evlist)
10561056
TEST_ASSERT_VAL("wrong exclude guest", !evsel->core.attr.exclude_guest);
10571057
TEST_ASSERT_VAL("wrong exclude host", !evsel->core.attr.exclude_host);
10581058
TEST_ASSERT_VAL("wrong precise_ip", !evsel->core.attr.precise_ip);
1059-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1059+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
10601060
TEST_ASSERT_VAL("wrong group_idx", evsel__group_idx(evsel) == 1);
10611061

10621062
return 0;
@@ -1096,7 +1096,7 @@ static int test__group_gh3(struct evlist *evlist)
10961096
TEST_ASSERT_VAL("wrong exclude guest", evsel->core.attr.exclude_guest);
10971097
TEST_ASSERT_VAL("wrong exclude host", !evsel->core.attr.exclude_host);
10981098
TEST_ASSERT_VAL("wrong precise_ip", !evsel->core.attr.precise_ip);
1099-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1099+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
11001100
TEST_ASSERT_VAL("wrong group_idx", evsel__group_idx(evsel) == 1);
11011101

11021102
return 0;
@@ -1136,7 +1136,7 @@ static int test__group_gh4(struct evlist *evlist)
11361136
TEST_ASSERT_VAL("wrong exclude guest", !evsel->core.attr.exclude_guest);
11371137
TEST_ASSERT_VAL("wrong exclude host", !evsel->core.attr.exclude_host);
11381138
TEST_ASSERT_VAL("wrong precise_ip", !evsel->core.attr.precise_ip);
1139-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1139+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
11401140
TEST_ASSERT_VAL("wrong group_idx", evsel__group_idx(evsel) == 1);
11411141

11421142
return 0;
@@ -1160,7 +1160,7 @@ static int test__leader_sample1(struct evlist *evlist)
11601160
TEST_ASSERT_VAL("wrong exclude host", !evsel->core.attr.exclude_host);
11611161
TEST_ASSERT_VAL("wrong precise_ip", !evsel->core.attr.precise_ip);
11621162
TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
1163-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1163+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
11641164
TEST_ASSERT_VAL("wrong sample_read", evsel->sample_read);
11651165

11661166
/* cache-misses - not sampling */
@@ -1174,7 +1174,7 @@ static int test__leader_sample1(struct evlist *evlist)
11741174
TEST_ASSERT_VAL("wrong exclude guest", evsel->core.attr.exclude_guest);
11751175
TEST_ASSERT_VAL("wrong exclude host", !evsel->core.attr.exclude_host);
11761176
TEST_ASSERT_VAL("wrong precise_ip", !evsel->core.attr.precise_ip);
1177-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1177+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
11781178
TEST_ASSERT_VAL("wrong sample_read", evsel->sample_read);
11791179

11801180
/* branch-misses - not sampling */
@@ -1189,7 +1189,7 @@ static int test__leader_sample1(struct evlist *evlist)
11891189
TEST_ASSERT_VAL("wrong exclude host", !evsel->core.attr.exclude_host);
11901190
TEST_ASSERT_VAL("wrong precise_ip", !evsel->core.attr.precise_ip);
11911191
TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
1192-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1192+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
11931193
TEST_ASSERT_VAL("wrong sample_read", evsel->sample_read);
11941194

11951195
return 0;
@@ -1213,7 +1213,7 @@ static int test__leader_sample2(struct evlist *evlist __maybe_unused)
12131213
TEST_ASSERT_VAL("wrong exclude host", !evsel->core.attr.exclude_host);
12141214
TEST_ASSERT_VAL("wrong precise_ip", !evsel->core.attr.precise_ip);
12151215
TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
1216-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1216+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
12171217
TEST_ASSERT_VAL("wrong sample_read", evsel->sample_read);
12181218

12191219
/* branch-misses - not sampling */
@@ -1228,7 +1228,7 @@ static int test__leader_sample2(struct evlist *evlist __maybe_unused)
12281228
TEST_ASSERT_VAL("wrong exclude host", !evsel->core.attr.exclude_host);
12291229
TEST_ASSERT_VAL("wrong precise_ip", !evsel->core.attr.precise_ip);
12301230
TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
1231-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1231+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
12321232
TEST_ASSERT_VAL("wrong sample_read", evsel->sample_read);
12331233

12341234
return 0;
@@ -1259,7 +1259,7 @@ static int test__pinned_group(struct evlist *evlist)
12591259
TEST_ASSERT_VAL("wrong config",
12601260
PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
12611261
TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
1262-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1262+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
12631263
TEST_ASSERT_VAL("wrong pinned", evsel->core.attr.pinned);
12641264

12651265
/* cache-misses - can not be pinned, but will go on with the leader */
@@ -1303,7 +1303,7 @@ static int test__exclusive_group(struct evlist *evlist)
13031303
TEST_ASSERT_VAL("wrong config",
13041304
PERF_COUNT_HW_CPU_CYCLES == evsel->core.attr.config);
13051305
TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
1306-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1306+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
13071307
TEST_ASSERT_VAL("wrong exclusive", evsel->core.attr.exclusive);
13081308

13091309
/* cache-misses - can not be pinned, but will go on with the leader */
@@ -1530,12 +1530,12 @@ static int test__hybrid_hw_group_event(struct evlist *evlist)
15301530
TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
15311531
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
15321532
TEST_ASSERT_VAL("wrong config", 0x3c == evsel->core.attr.config);
1533-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1533+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
15341534

15351535
evsel = evsel__next(evsel);
15361536
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
15371537
TEST_ASSERT_VAL("wrong config", 0xc0 == evsel->core.attr.config);
1538-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1538+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
15391539
return 0;
15401540
}
15411541

@@ -1546,12 +1546,12 @@ static int test__hybrid_sw_hw_group_event(struct evlist *evlist)
15461546
evsel = leader = evlist__first(evlist);
15471547
TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
15481548
TEST_ASSERT_VAL("wrong type", PERF_TYPE_SOFTWARE == evsel->core.attr.type);
1549-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1549+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
15501550

15511551
evsel = evsel__next(evsel);
15521552
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
15531553
TEST_ASSERT_VAL("wrong config", 0x3c == evsel->core.attr.config);
1554-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1554+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
15551555
return 0;
15561556
}
15571557

@@ -1563,11 +1563,11 @@ static int test__hybrid_hw_sw_group_event(struct evlist *evlist)
15631563
TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
15641564
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
15651565
TEST_ASSERT_VAL("wrong config", 0x3c == evsel->core.attr.config);
1566-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1566+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
15671567

15681568
evsel = evsel__next(evsel);
15691569
TEST_ASSERT_VAL("wrong type", PERF_TYPE_SOFTWARE == evsel->core.attr.type);
1570-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1570+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
15711571
return 0;
15721572
}
15731573

@@ -1579,14 +1579,14 @@ static int test__hybrid_group_modifier1(struct evlist *evlist)
15791579
TEST_ASSERT_VAL("wrong number of entries", 2 == evlist->core.nr_entries);
15801580
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
15811581
TEST_ASSERT_VAL("wrong config", 0x3c == evsel->core.attr.config);
1582-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1582+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
15831583
TEST_ASSERT_VAL("wrong exclude_user", evsel->core.attr.exclude_user);
15841584
TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);
15851585

15861586
evsel = evsel__next(evsel);
15871587
TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->core.attr.type);
15881588
TEST_ASSERT_VAL("wrong config", 0xc0 == evsel->core.attr.config);
1589-
TEST_ASSERT_VAL("wrong leader", evsel->leader == leader);
1589+
TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));
15901590
TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);
15911591
TEST_ASSERT_VAL("wrong exclude_kernel", evsel->core.attr.exclude_kernel);
15921592
return 0;

tools/perf/util/auxtrace.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ static int evlist__regroup(struct evlist *evlist, struct evsel *leader, struct e
7373
grp = false;
7474
evlist__for_each_entry(evlist, evsel) {
7575
if (grp) {
76-
if (!(evsel->leader == leader ||
77-
(evsel->leader == evsel &&
76+
if (!(evsel__leader(evsel) == leader ||
77+
(evsel__leader(evsel) == evsel &&
7878
evsel->core.nr_members <= 1)))
7979
return -EINVAL;
8080
} else if (evsel == leader) {
@@ -87,8 +87,8 @@ static int evlist__regroup(struct evlist *evlist, struct evsel *leader, struct e
8787
grp = false;
8888
evlist__for_each_entry(evlist, evsel) {
8989
if (grp) {
90-
if (evsel->leader != leader) {
91-
evsel->leader = leader;
90+
if (!evsel__has_leader(evsel, leader)) {
91+
evsel__set_leader(evsel, leader);
9292
if (leader->core.nr_members < 1)
9393
leader->core.nr_members = 1;
9494
leader->core.nr_members += 1;
@@ -1231,11 +1231,11 @@ static void unleader_evsel(struct evlist *evlist, struct evsel *leader)
12311231

12321232
/* Find new leader for the group */
12331233
evlist__for_each_entry(evlist, evsel) {
1234-
if (evsel->leader != leader || evsel == leader)
1234+
if (!evsel__has_leader(evsel, leader) || evsel == leader)
12351235
continue;
12361236
if (!new_leader)
12371237
new_leader = evsel;
1238-
evsel->leader = new_leader;
1238+
evsel__set_leader(evsel, new_leader);
12391239
}
12401240

12411241
/* Update group information */

tools/perf/util/bpf_counter.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ static int bperf_check_target(struct evsel *evsel,
353353
enum bperf_filter_type *filter_type,
354354
__u32 *filter_entry_cnt)
355355
{
356-
if (evsel->leader->core.nr_members > 1) {
356+
if (evsel->core.leader->nr_members > 1) {
357357
pr_err("bpf managed perf events do not yet support groups.\n");
358358
return -1;
359359
}

0 commit comments

Comments
 (0)