mirror of https://gitee.com/openkylin/linux.git
perf evsel: State in the default event name if attr.exclude_kernel is set
When no event is specified perf will use the "cycles" hardware event with the highest precision available in the processor, and excluding kernel events for non-root users, so make that clear in the event name by setting the "u" event modifier, i.e. "cycles:upp". E.g.: The default for root: # perf record usleep 1 # perf evlist -v cycles:ppp: ..., precise_ip: 3, exclude_kernel: 0, ... # And for !root: $ perf record usleep 1 $ perf evlist -v cycles:uppp: ... , precise_ip: 3, exclude_kernel: 1, ... $ Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-lf29zcdl422i9knrgde0uwy3@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
d37a369790
commit
ede5626d30
|
@ -298,8 +298,10 @@ struct perf_evsel *perf_evsel__new_cycles(void)
|
|||
goto out;
|
||||
|
||||
/* use asprintf() because free(evsel) assumes name is allocated */
|
||||
if (asprintf(&evsel->name, "cycles%.*s",
|
||||
attr.precise_ip ? attr.precise_ip + 1 : 0, ":ppp") < 0)
|
||||
if (asprintf(&evsel->name, "cycles%s%s%.*s",
|
||||
(attr.precise_ip || attr.exclude_kernel) ? ":" : "",
|
||||
attr.exclude_kernel ? "u" : "",
|
||||
attr.precise_ip ? attr.precise_ip + 1 : 0, "ppp") < 0)
|
||||
goto error_free;
|
||||
out:
|
||||
return evsel;
|
||||
|
|
Loading…
Reference in New Issue