perf stat: Move 'scale' into struct perf_stat_config
authorJiri Olsa <jolsa@kernel.org>
Tue, 21 Jul 2015 12:31:23 +0000 (14:31 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 6 Aug 2015 19:02:39 +0000 (16:02 -0300)
Moving 'scale' into struct perf_stat_config. The point is to centralize
the base stat config so it could be used localy together with other stat
routines in other parts of perf code.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1437481927-29538-4-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-stat.c
tools/perf/util/stat.h

index bafb830b1bd95e72b182c6a992edde7e6ff926a0..3fb2865e519a3d758410965ac1c1bfd2ca973686 100644 (file)
@@ -101,7 +101,6 @@ static struct target target = {
 
 static int                     run_count                       =  1;
 static bool                    no_inherit                      = false;
-static bool                    scale                           =  true;
 static volatile pid_t          child_pid                       = -1;
 static bool                    null_run                        =  false;
 static int                     detailed_run                    =  0;
@@ -127,6 +126,7 @@ static volatile int done = 0;
 
 static struct perf_stat_config stat_config = {
        .aggr_mode      = AGGR_GLOBAL,
+       .scale          = true,
 };
 
 static inline void diff_timespec(struct timespec *r, struct timespec *a,
@@ -151,7 +151,7 @@ static int create_perf_stat_counter(struct perf_evsel *evsel)
 {
        struct perf_event_attr *attr = &evsel->attr;
 
-       if (scale)
+       if (stat_config.scale)
                attr->read_format = PERF_FORMAT_TOTAL_TIME_ENABLED |
                                    PERF_FORMAT_TOTAL_TIME_RUNNING;
 
@@ -240,13 +240,13 @@ process_counter_values(struct perf_evsel *evsel, int cpu, int thread,
        case AGGR_NONE:
                if (!evsel->snapshot)
                        perf_evsel__compute_deltas(evsel, cpu, thread, count);
-               perf_counts_values__scale(count, scale, NULL);
+               perf_counts_values__scale(count, stat_config.scale, NULL);
                if (stat_config.aggr_mode == AGGR_NONE)
                        perf_stat__update_shadow_stats(evsel, count->values, cpu);
                break;
        case AGGR_GLOBAL:
                aggr->val += count->val;
-               if (scale) {
+               if (stat_config.scale) {
                        aggr->ena += count->ena;
                        aggr->run += count->run;
                }
@@ -299,7 +299,7 @@ static int process_counter(struct perf_evsel *counter)
 
        if (!counter->snapshot)
                perf_evsel__compute_deltas(counter, -1, -1, aggr);
-       perf_counts_values__scale(aggr, scale, &counter->counts->scaled);
+       perf_counts_values__scale(aggr, stat_config.scale, &counter->counts->scaled);
 
        for (i = 0; i < 3; i++)
                update_stats(&ps->res_stats[i], count[i]);
@@ -1274,7 +1274,7 @@ int cmd_stat(int argc, const char **argv, const char *prefix __maybe_unused)
                    "system-wide collection from all CPUs"),
        OPT_BOOLEAN('g', "group", &group,
                    "put the counters into a counter group"),
-       OPT_BOOLEAN('c', "scale", &scale, "scale/normalize counters"),
+       OPT_BOOLEAN('c', "scale", &stat_config.scale, "scale/normalize counters"),
        OPT_INCR('v', "verbose", &verbose,
                    "be more verbose (show counter open errors, etc)"),
        OPT_INTEGER('r', "repeat", &run_count,
index 078bee49ccade183c6ddf22f16a2ddc4283ad7e0..0a1d83faa7b936675e021babbe59e7d4078edfd9 100644 (file)
@@ -52,6 +52,7 @@ struct perf_counts {
 
 struct perf_stat_config {
        enum aggr_mode  aggr_mode;
+       bool            scale;
 };
 
 static inline struct perf_counts_values*