diff options
author | Jiri Olsa <jolsa@kernel.org> | 2015-06-26 05:29:17 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2015-06-26 10:46:00 -0400 |
commit | a7d0a102e4ae46b75b70a9500979e7ed3cdf183f (patch) | |
tree | e20b51a83e32859812870723c676af04a99003e8 | |
parent | 24e34f68e21a47a582b3cc2eccdb835b80b1830a (diff) |
perf stat: Introduce perf_evsel__alloc_stats function
Move all stat allocation logic related to stat object under single
function. This way we can use it separately for stat object out of
evlist object.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1435310967-14570-13-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r-- | tools/perf/util/stat.c | 20 | ||||
-rw-r--r-- | tools/perf/util/stat.h | 2 |
2 files changed, 16 insertions, 6 deletions
diff --git a/tools/perf/util/stat.c b/tools/perf/util/stat.c index 818cb022fcb6..f2a0d1521e26 100644 --- a/tools/perf/util/stat.c +++ b/tools/perf/util/stat.c | |||
@@ -189,17 +189,25 @@ void perf_evsel__free_prev_raw_counts(struct perf_evsel *evsel) | |||
189 | evsel->prev_raw_counts = NULL; | 189 | evsel->prev_raw_counts = NULL; |
190 | } | 190 | } |
191 | 191 | ||
192 | int perf_evsel__alloc_stats(struct perf_evsel *evsel, bool alloc_raw) | ||
193 | { | ||
194 | int ncpus = perf_evsel__nr_cpus(evsel); | ||
195 | int nthreads = thread_map__nr(evsel->threads); | ||
196 | |||
197 | if (perf_evsel__alloc_stat_priv(evsel) < 0 || | ||
198 | perf_evsel__alloc_counts(evsel, ncpus, nthreads) < 0 || | ||
199 | (alloc_raw && perf_evsel__alloc_prev_raw_counts(evsel, ncpus, nthreads) < 0)) | ||
200 | return -ENOMEM; | ||
201 | |||
202 | return 0; | ||
203 | } | ||
204 | |||
192 | int perf_evlist__alloc_stats(struct perf_evlist *evlist, bool alloc_raw) | 205 | int perf_evlist__alloc_stats(struct perf_evlist *evlist, bool alloc_raw) |
193 | { | 206 | { |
194 | struct perf_evsel *evsel; | 207 | struct perf_evsel *evsel; |
195 | int nthreads = thread_map__nr(evlist->threads); | ||
196 | 208 | ||
197 | evlist__for_each(evlist, evsel) { | 209 | evlist__for_each(evlist, evsel) { |
198 | int ncpus = perf_evsel__nr_cpus(evsel); | 210 | if (perf_evsel__alloc_stats(evsel, alloc_raw)) |
199 | |||
200 | if (perf_evsel__alloc_stat_priv(evsel) < 0 || | ||
201 | perf_evsel__alloc_counts(evsel, ncpus, nthreads) < 0 || | ||
202 | (alloc_raw && perf_evsel__alloc_prev_raw_counts(evsel, ncpus, nthreads) < 0)) | ||
203 | goto out_free; | 211 | goto out_free; |
204 | } | 212 | } |
205 | 213 | ||
diff --git a/tools/perf/util/stat.h b/tools/perf/util/stat.h index 5f62db2472c7..9f05c571befe 100644 --- a/tools/perf/util/stat.h +++ b/tools/perf/util/stat.h | |||
@@ -103,6 +103,8 @@ int perf_evsel__alloc_prev_raw_counts(struct perf_evsel *evsel, | |||
103 | int ncpus, int nthreads); | 103 | int ncpus, int nthreads); |
104 | void perf_evsel__free_prev_raw_counts(struct perf_evsel *evsel); | 104 | void perf_evsel__free_prev_raw_counts(struct perf_evsel *evsel); |
105 | 105 | ||
106 | int perf_evsel__alloc_stats(struct perf_evsel *evsel, bool alloc_raw); | ||
107 | |||
106 | int perf_evlist__alloc_stats(struct perf_evlist *evlist, bool alloc_raw); | 108 | int perf_evlist__alloc_stats(struct perf_evlist *evlist, bool alloc_raw); |
107 | void perf_evlist__free_stats(struct perf_evlist *evlist); | 109 | void perf_evlist__free_stats(struct perf_evlist *evlist); |
108 | void perf_evlist__reset_stats(struct perf_evlist *evlist); | 110 | void perf_evlist__reset_stats(struct perf_evlist *evlist); |