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
|
@ -1795,3 +1795,18 @@ bool perf_evlist__exclude_kernel(struct perf_evlist *evlist)
|
|||
|
||||
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);
|
||||
|
||||
bool perf_evlist__exclude_kernel(struct perf_evlist *evlist);
|
||||
|
||||
void perf_evlist__force_leader(struct perf_evlist *evlist);
|
||||
|
||||
#endif /* __PERF_EVLIST_H */
|
||||
|
|
Loading…
Reference in New Issue