mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
perf callchain: Setup callchain properly in pipe mode
Callchains are automatically initialized by checking on event's sample_type. For pipe mode we need to put this check into attr event code. Moving the callchains setup code into callchain_param_setup function and calling it from attr event process code. This enables pipe output having callchains, like: # perf record -g -e 'raw_syscalls:sys_enter' true | perf script # perf record -g -e 'raw_syscalls:sys_enter' true | perf report Committer notes: We still need the next patch for the above output to work. Reported-by: Paul Khuong <pvk@pvk.ca> Signed-off-by: Jiri Olsa <jolsa@kernel.org> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Ian Rogers <irogers@google.com> Cc: Michael Petlan <mpetlan@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lore.kernel.org/lkml/20200507095024.2789147-5-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
14d3d54052
commit
0d71a2b242
4 changed files with 49 additions and 13 deletions
|
@ -2085,6 +2085,7 @@ static int process_attr(struct perf_tool *tool, union perf_event *event,
|
|||
struct perf_script *scr = container_of(tool, struct perf_script, tool);
|
||||
struct evlist *evlist;
|
||||
struct evsel *evsel, *pos;
|
||||
u64 sample_type;
|
||||
int err;
|
||||
static struct evsel_script *es;
|
||||
|
||||
|
@ -2119,10 +2120,19 @@ static int process_attr(struct perf_tool *tool, union perf_event *event,
|
|||
|
||||
set_print_ip_opts(&evsel->core.attr);
|
||||
|
||||
if (evsel->core.attr.sample_type)
|
||||
if (evsel->core.attr.sample_type) {
|
||||
err = perf_evsel__check_attr(evsel, scr->session);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
|
||||
return err;
|
||||
/*
|
||||
* Check if we need to enable callchains based
|
||||
* on events sample_type.
|
||||
*/
|
||||
sample_type = perf_evlist__combined_sample_type(evlist);
|
||||
callchain_param_setup(sample_type);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int print_event_with_time(struct perf_tool *tool,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue