mirror of https://gitee.com/openkylin/linux.git
perf evsel: Add support for synthesized branch stack sample type
Allow for a synthesized branch stack to be added to samples. As with synthesized call chains, the sample type cannot be changed because it is needed to continue to parse events. So add and use helper function evsel__has_br_stack() to indicate a branch stack, whether original or synthesized. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Link: http://lore.kernel.org/lkml/20200429150751.12570-6-adrian.hunter@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
ec90e42ce5
commit
6cd2cbfc68
|
@ -417,6 +417,16 @@ static inline bool evsel__has_callchain(const struct evsel *evsel)
|
|||
evsel->synth_sample_type & PERF_SAMPLE_CALLCHAIN;
|
||||
}
|
||||
|
||||
static inline bool evsel__has_br_stack(const struct evsel *evsel)
|
||||
{
|
||||
/*
|
||||
* For reporting purposes, an evsel sample can have a recorded branch
|
||||
* stack or a branch stack synthesized from AUX area data.
|
||||
*/
|
||||
return evsel->core.attr.sample_type & PERF_SAMPLE_BRANCH_STACK ||
|
||||
evsel->synth_sample_type & PERF_SAMPLE_BRANCH_STACK;
|
||||
}
|
||||
|
||||
struct perf_env *perf_evsel__env(struct evsel *evsel);
|
||||
|
||||
int perf_evsel__store_ids(struct evsel *evsel, struct evlist *evlist);
|
||||
|
|
|
@ -1243,7 +1243,7 @@ static void dump_sample(struct evsel *evsel, union perf_event *event,
|
|||
if (evsel__has_callchain(evsel))
|
||||
callchain__printf(evsel, sample);
|
||||
|
||||
if (sample_type & PERF_SAMPLE_BRANCH_STACK)
|
||||
if (evsel__has_br_stack(evsel))
|
||||
branch_stack__printf(sample, perf_evsel__has_branch_callstack(evsel));
|
||||
|
||||
if (sample_type & PERF_SAMPLE_REGS_USER)
|
||||
|
|
Loading…
Reference in New Issue