diff options
Diffstat (limited to 'tools/lib/perf/evlist.c')
| -rw-r--r-- | tools/lib/perf/evlist.c | 19 | 
1 files changed, 11 insertions, 8 deletions
| diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c index e37dfad31383..9a770bfdc804 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -407,7 +407,7 @@ perf_evlist__mmap_cb_get(struct perf_evlist *evlist, bool overwrite, int idx)  static int  perf_evlist__mmap_cb_mmap(struct perf_mmap *map, struct perf_mmap_param *mp, -			  int output, int cpu) +			  int output, struct perf_cpu cpu)  {  	return perf_mmap__mmap(map, mp, output, cpu);  } @@ -426,7 +426,7 @@ mmap_per_evsel(struct perf_evlist *evlist, struct perf_evlist_mmap_ops *ops,  	       int idx, struct perf_mmap_param *mp, int cpu_idx,  	       int thread, int *_output, int *_output_overwrite)  { -	int evlist_cpu = perf_cpu_map__cpu(evlist->cpus, cpu_idx); +	struct perf_cpu evlist_cpu = perf_cpu_map__cpu(evlist->cpus, cpu_idx);  	struct perf_evsel *evsel;  	int revent; @@ -643,14 +643,14 @@ perf_evlist__next_mmap(struct perf_evlist *evlist, struct perf_mmap *map,  	return overwrite ? evlist->mmap_ovw_first : evlist->mmap_first;  } -void __perf_evlist__set_leader(struct list_head *list) +void __perf_evlist__set_leader(struct list_head *list, struct perf_evsel *leader)  { -	struct perf_evsel *evsel, *leader; +	struct perf_evsel *first, *last, *evsel; -	leader = list_entry(list->next, struct perf_evsel, node); -	evsel = list_entry(list->prev, struct perf_evsel, node); +	first = list_first_entry(list, struct perf_evsel, node); +	last = list_last_entry(list, struct perf_evsel, node); -	leader->nr_members = evsel->idx - leader->idx + 1; +	leader->nr_members = last->idx - first->idx + 1;  	__perf_evlist__for_each_entry(list, evsel)  		evsel->leader = leader; @@ -659,7 +659,10 @@ void __perf_evlist__set_leader(struct list_head *list)  void perf_evlist__set_leader(struct perf_evlist *evlist)  {  	if (evlist->nr_entries) { +		struct perf_evsel *first = list_entry(evlist->entries.next, +						struct perf_evsel, node); +  		evlist->nr_groups = evlist->nr_entries > 1 ? 1 : 0; -		__perf_evlist__set_leader(&evlist->entries); +		__perf_evlist__set_leader(&evlist->entries, first);  	}  } |