perf tools: fix set event list leader
PATCH 1/1 perf tools: fix set event list leader
The __perf_evlist__set_leader() was setting the leader for all events in the list except the first. Which means it assumed the first event already had event->leader = event. Seems like this should be the role of the function to also do this. This is a requirement for an upcoming patch set.
---
tools/perf/util/evlist.c +1 -2
@@ -119,8 +119,7 @@ void __perf_evlist__set_leader(struct list_head *list) leader = list_entry(list->next, struct perf_evsel, node);list_for_each_entry (evsel, list, node) { -if (evsel != leader) - evsel->leader = leader; + evsel->leader = leader; } }
Quoted 6 lines · Stephane Eranian
The
__perf_evlist__set_leader()was setting the leader for all events in the list except the first. Which means it assumed the first event already hadevent->leader= event. Seems like this should be the role of the function to also do this. This is a requirement for an upcoming patch set.
agreed,
Acked/Tested-by Jiri Olsa <[email protected]>
Quoted 9 lines
Signed-off-by Stephane Eranian <[email protected]>---
tools/perf/util/evlist.c +0
-0
tools/perf/util/evlist.c void __perf_evlist__set_leader(struct list_head *list) · line 123
Quoted 7 lines
tools/perf/util/evlist.c +1
-2@@ -119,8 +119,7 @@ void __perf_evlist__set_leader(struct list_head *list) leader = list_entry(list->next, struct perf_evsel, node);list_for_each_entry (evsel, list, node) { -if (evsel != leader) - evsel->leader = leader; + evsel->leader = leader; }
that's leftover from the times when leader has 'leader' set to NULL
we made the change here:
perf evsel: Set leader evsel's ->leader to itself
commit 2cfda562da7b0b1e0575507ef3efe782d4e218e4
Author: Namhyung Kim <[email protected]> Date: Thu Nov 29 15:38:29 2012 +0900
the leader is set properly in perf_evsel__init and when reading perf.data, so there was no harm in current code
thanks,
jirka
Hi Stephane,
Quoted 7 lines · Stephane Eranian
The
__perf_evlist__set_leader()was setting the leader for all events in the list except the first. Which means it assumed the first event already hadevent->leader= event. Seems like this should be the role of the function to also do this. This is a requirement for an upcoming patch set.Signed-off-by Stephane Eranian <[email protected]>
Thanks,
Namhyung
Quoted 16 lines
---
tools/perf/util/evlist.c +1
-2@@ -119,8 +119,7 @@ void __perf_evlist__set_leader(struct list_head *list) leader = list_entry(list->next, struct perf_evsel, node);list_for_each_entry (evsel, list, node) { -if (evsel != leader) - evsel->leader = leader; + evsel->leader = leader; } }
[tip:perf/core] perf evlist: Fix set event list leader
In reply to Stephane EranianCommit-ID: 74b2133d19e776924b2773e27dd9d6940f1cc594 Gitweb: http://git.kernel.org/tip/74b2133d19e776924b2773e27dd9d6940f1cc594 Author: Stephane Eranian <[email protected]> AuthorDate: Thu, 31 Jan 2013 13:54:37 +0100 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Wed, 6 Feb 2013 18:09:25 -0300
perf evlist: Fix set event list leader
The __perf_evlist__set_leader() was setting the leader for all events in the list except the first. Which means it assumed the first event already had event->leader = event.
Seems like this should be the role of the function to also do this. This is a requirement for an upcoming patch set.
--- tools/perf/util/evlist.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
tools/perf/util/evlist.c +1 -2
@@ -122,8 +122,7 @@ void __perf_evlist__set_leader(struct list_head *list) leader->nr_members = evsel->idx - leader->idx +1 ;list_for_each_entry (evsel, list, node) { -if (evsel != leader) - evsel->leader = leader; + evsel->leader = leader; } }