Skip to contentSkip to conversation

perf tools: fix set event list leader

PATCH In review Stephane Eranian 3 participants 4 messages Jan 31, 2013 – Feb 6, 2013 perf events

lore
Share & tools
lore
#0 lore raw

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
index dc8aee9..050d5bc 100644
@@ -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;
 	}
 }
 
#1 lore raw
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 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.

agreed,

Acked/Tested-by Jiri Olsa <[email protected]>

Quoted 9 lines

---

tools/perf/util/evlist.c +0 -0
index dc8aee9..050d5bc 100644

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

maintainer Acked-by on v1 1/1
#2 lore raw
In reply to Stephane Eranian

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 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.

Thanks,
Namhyung

Quoted 16 lines

---

tools/perf/util/evlist.c +1 -2
index dc8aee9..050d5bc 100644
@@ -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;
 	}
 }
 
#3 lore raw

[tip:perf/core] perf evlist: Fix set event list leader

In reply to Stephane Eranian
Commit-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
index eddd5eb..ecf123e 100644
@@ -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;
 	}
 }