perf stat: Move ru_* data to 'struct perf_stat_config'
Move the 'ru_*' global variables to 'struct perf_stat_config', so that it can be passed around and used outside the 'perf stat' command. 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-36-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Родитель
3b3cd9a41c
Коммит
8897a8916e
|
@ -171,8 +171,6 @@ static bool interval_count;
|
|||
static const char *output_name;
|
||||
static int output_fd;
|
||||
static u64 *walltime_run;
|
||||
static bool ru_display = false;
|
||||
static struct rusage ru_data;
|
||||
|
||||
struct perf_stat {
|
||||
bool record;
|
||||
|
@ -583,7 +581,7 @@ try_again:
|
|||
break;
|
||||
}
|
||||
}
|
||||
wait4(child_pid, &status, 0, &ru_data);
|
||||
wait4(child_pid, &status, 0, &stat_config.ru_data);
|
||||
|
||||
if (workload_exec_errno) {
|
||||
const char *emsg = str_error_r(workload_exec_errno, msg, sizeof(msg));
|
||||
|
@ -1679,9 +1677,9 @@ static void print_footer(struct perf_stat_config *config)
|
|||
if (config->run_count == 1) {
|
||||
fprintf(output, " %17.9f seconds time elapsed", avg);
|
||||
|
||||
if (ru_display) {
|
||||
double ru_utime = timeval2double(&ru_data.ru_utime);
|
||||
double ru_stime = timeval2double(&ru_data.ru_stime);
|
||||
if (config->ru_display) {
|
||||
double ru_utime = timeval2double(&config->ru_data.ru_utime);
|
||||
double ru_stime = timeval2double(&config->ru_data.ru_stime);
|
||||
|
||||
fprintf(output, "\n\n");
|
||||
fprintf(output, " %17.9f seconds user\n", ru_utime);
|
||||
|
@ -2855,7 +2853,7 @@ int cmd_stat(int argc, const char **argv)
|
|||
* run and when there's specified tracee.
|
||||
*/
|
||||
if ((stat_config.run_count == 1) && target__none(&target))
|
||||
ru_display = true;
|
||||
stat_config.ru_display = true;
|
||||
|
||||
if (stat_config.run_count < 0) {
|
||||
pr_err("Run count must be a positive number\n");
|
||||
|
|
|
@ -4,6 +4,10 @@
|
|||
|
||||
#include <linux/types.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
#include <sys/wait.h>
|
||||
#include "xyarray.h"
|
||||
#include "rblist.h"
|
||||
#include "perf.h"
|
||||
|
@ -95,6 +99,7 @@ struct perf_stat_config {
|
|||
bool interval_clear;
|
||||
bool metric_only;
|
||||
bool null_run;
|
||||
bool ru_display;
|
||||
FILE *output;
|
||||
unsigned int interval;
|
||||
unsigned int timeout;
|
||||
|
@ -109,6 +114,7 @@ struct perf_stat_config {
|
|||
int stats_num;
|
||||
const char *csv_sep;
|
||||
struct stats *walltime_nsecs_stats;
|
||||
struct rusage ru_data;
|
||||
};
|
||||
|
||||
void update_stats(struct stats *stats, u64 val);
|
||||
|
|
Загрузка…
Ссылка в новой задаче