mirror of https://gitee.com/openkylin/linux.git
perf stat: Add 'target' argument to perf_evlist__print_counters()
Add 'struct target' argument to perf_evlist__print_counters(), so the function does not depend on the 'perf stat' command object local target and can be moved out. 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-25-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
df4f7b4d4b
commit
c512e0eae4
|
@ -1590,6 +1590,7 @@ static void print_interval(struct perf_stat_config *config,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_header(struct perf_stat_config *config,
|
static void print_header(struct perf_stat_config *config,
|
||||||
|
struct target *_target,
|
||||||
int argc, const char **argv)
|
int argc, const char **argv)
|
||||||
{
|
{
|
||||||
FILE *output = config->output;
|
FILE *output = config->output;
|
||||||
|
@ -1600,18 +1601,18 @@ static void print_header(struct perf_stat_config *config,
|
||||||
if (!config->csv_output) {
|
if (!config->csv_output) {
|
||||||
fprintf(output, "\n");
|
fprintf(output, "\n");
|
||||||
fprintf(output, " Performance counter stats for ");
|
fprintf(output, " Performance counter stats for ");
|
||||||
if (target.system_wide)
|
if (_target->system_wide)
|
||||||
fprintf(output, "\'system wide");
|
fprintf(output, "\'system wide");
|
||||||
else if (target.cpu_list)
|
else if (_target->cpu_list)
|
||||||
fprintf(output, "\'CPU(s) %s", target.cpu_list);
|
fprintf(output, "\'CPU(s) %s", _target->cpu_list);
|
||||||
else if (!target__has_task(&target)) {
|
else if (!target__has_task(_target)) {
|
||||||
fprintf(output, "\'%s", argv ? argv[0] : "pipe");
|
fprintf(output, "\'%s", argv ? argv[0] : "pipe");
|
||||||
for (i = 1; argv && (i < argc); i++)
|
for (i = 1; argv && (i < argc); i++)
|
||||||
fprintf(output, " %s", argv[i]);
|
fprintf(output, " %s", argv[i]);
|
||||||
} else if (target.pid)
|
} else if (_target->pid)
|
||||||
fprintf(output, "process id \'%s", target.pid);
|
fprintf(output, "process id \'%s", _target->pid);
|
||||||
else
|
else
|
||||||
fprintf(output, "thread id \'%s", target.tid);
|
fprintf(output, "thread id \'%s", _target->tid);
|
||||||
|
|
||||||
fprintf(output, "\'");
|
fprintf(output, "\'");
|
||||||
if (run_count > 1)
|
if (run_count > 1)
|
||||||
|
@ -1716,6 +1717,7 @@ static void print_footer(struct perf_stat_config *config)
|
||||||
static void
|
static void
|
||||||
perf_evlist__print_counters(struct perf_evlist *evlist,
|
perf_evlist__print_counters(struct perf_evlist *evlist,
|
||||||
struct perf_stat_config *config,
|
struct perf_stat_config *config,
|
||||||
|
struct target *_target,
|
||||||
struct timespec *ts,
|
struct timespec *ts,
|
||||||
int argc, const char **argv)
|
int argc, const char **argv)
|
||||||
{
|
{
|
||||||
|
@ -1727,7 +1729,7 @@ perf_evlist__print_counters(struct perf_evlist *evlist,
|
||||||
if (interval)
|
if (interval)
|
||||||
print_interval(config, prefix = buf, ts);
|
print_interval(config, prefix = buf, ts);
|
||||||
else
|
else
|
||||||
print_header(config, argc, argv);
|
print_header(config, _target, argc, argv);
|
||||||
|
|
||||||
if (metric_only) {
|
if (metric_only) {
|
||||||
static int num_print_iv;
|
static int num_print_iv;
|
||||||
|
@ -1789,7 +1791,7 @@ static void print_counters(struct timespec *ts, int argc, const char **argv)
|
||||||
if (STAT_RECORD && perf_stat.data.is_pipe)
|
if (STAT_RECORD && perf_stat.data.is_pipe)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
perf_evlist__print_counters(evsel_list, &stat_config,
|
perf_evlist__print_counters(evsel_list, &stat_config, &target,
|
||||||
ts, argc, argv);
|
ts, argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue