perf stat: Add 'identifier' flag to 'struct perf_stat_config'
Add 'identifier' flag to 'struct perf_stat_config' to carry the info whether to use PERF_SAMPLE_IDENTIFIER for events. This makes create_perf_stat_counter() independent. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <andi@firstfloor.org> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/20180830063252.23729-6-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Родитель
35386233fc
Коммит
7d9ad16afe
|
@ -261,16 +261,7 @@ static int create_perf_stat_counter(struct perf_evsel *evsel,
|
||||||
*/
|
*/
|
||||||
attr->sample_period = 0;
|
attr->sample_period = 0;
|
||||||
|
|
||||||
/*
|
if (config->identifier)
|
||||||
* But set sample_type to PERF_SAMPLE_IDENTIFIER, which should be harmless
|
|
||||||
* while avoiding that older tools show confusing messages.
|
|
||||||
*
|
|
||||||
* However for pipe sessions we need to keep it zero,
|
|
||||||
* because script's perf_evsel__check_attr is triggered
|
|
||||||
* by attr->sample_type != 0, and we can't run it on
|
|
||||||
* stat sessions.
|
|
||||||
*/
|
|
||||||
if (!(STAT_RECORD && perf_stat.data.is_pipe))
|
|
||||||
attr->sample_type = PERF_SAMPLE_IDENTIFIER;
|
attr->sample_type = PERF_SAMPLE_IDENTIFIER;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -3064,6 +3055,17 @@ int cmd_stat(int argc, const char **argv)
|
||||||
if (perf_stat_init_aggr_mode())
|
if (perf_stat_init_aggr_mode())
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set sample_type to PERF_SAMPLE_IDENTIFIER, which should be harmless
|
||||||
|
* while avoiding that older tools show confusing messages.
|
||||||
|
*
|
||||||
|
* However for pipe sessions we need to keep it zero,
|
||||||
|
* because script's perf_evsel__check_attr is triggered
|
||||||
|
* by attr->sample_type != 0, and we can't run it on
|
||||||
|
* stat sessions.
|
||||||
|
*/
|
||||||
|
stat_config.identifier = !(STAT_RECORD && perf_stat.data.is_pipe);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We dont want to block the signals - that would cause
|
* We dont want to block the signals - that would cause
|
||||||
* child tasks to inherit that and Ctrl-C would not work.
|
* child tasks to inherit that and Ctrl-C would not work.
|
||||||
|
|
|
@ -89,6 +89,7 @@ struct perf_stat_config {
|
||||||
enum aggr_mode aggr_mode;
|
enum aggr_mode aggr_mode;
|
||||||
bool scale;
|
bool scale;
|
||||||
bool no_inherit;
|
bool no_inherit;
|
||||||
|
bool identifier;
|
||||||
FILE *output;
|
FILE *output;
|
||||||
unsigned int interval;
|
unsigned int interval;
|
||||||
unsigned int timeout;
|
unsigned int timeout;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче