mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 21:57:43 +00:00
perf evlist: Introduce force_leader() method
For non-explicit group (e.g. those created with -e '{eventA,eventB}'), 'perf report' supports a option '--group' which can enable group output. We also need to support 'perf annotate' with the same '--group'. Create a new function perf_evlist__force_leader() which contains common code to force setting the group leader. Signed-off-by: Jin Yao <yao.jin@linux.intel.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1526914666-31839-2-git-send-email-yao.jin@linux.intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
2996123e7e
commit
e2bdbe80a0
2 changed files with 18 additions and 0 deletions
|
@ -1795,3 +1795,18 @@ bool perf_evlist__exclude_kernel(struct perf_evlist *evlist)
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Events in data file are not collect in groups, but we still want
|
||||||
|
* the group display. Set the artificial group and set the leader's
|
||||||
|
* forced_leader flag to notify the display code.
|
||||||
|
*/
|
||||||
|
void perf_evlist__force_leader(struct perf_evlist *evlist)
|
||||||
|
{
|
||||||
|
if (!evlist->nr_groups) {
|
||||||
|
struct perf_evsel *leader = perf_evlist__first(evlist);
|
||||||
|
|
||||||
|
perf_evlist__set_leader(evlist);
|
||||||
|
leader->forced_leader = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -309,4 +309,7 @@ struct perf_evsel *perf_evlist__event2evsel(struct perf_evlist *evlist,
|
||||||
union perf_event *event);
|
union perf_event *event);
|
||||||
|
|
||||||
bool perf_evlist__exclude_kernel(struct perf_evlist *evlist);
|
bool perf_evlist__exclude_kernel(struct perf_evlist *evlist);
|
||||||
|
|
||||||
|
void perf_evlist__force_leader(struct perf_evlist *evlist);
|
||||||
|
|
||||||
#endif /* __PERF_EVLIST_H */
|
#endif /* __PERF_EVLIST_H */
|
||||||
|
|
Loading…
Reference in a new issue