diff options
author | Jin Yao <yao.jin@linux.intel.com> | 2020-05-20 07:27:34 +0300 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2020-05-28 16:03:27 +0300 |
commit | cf4d9bd67cb1531a775599d04b9258c5e16b3fc6 (patch) | |
tree | f5721f45ef0480b64485cf1a60d4e0c69c03b394 /tools/perf/util | |
parent | 72f02a947e89223b1b4a7825b68b2ba8fd2852c8 (diff) | |
download | linux-cf4d9bd67cb1531a775599d04b9258c5e16b3fc6.tar.xz |
perf counts: Reset prev_raw_counts counts
When we want to reset the evsel->prev_raw_counts, zeroing the aggr is
not enough, we need to reset the perf_counts too.
The perf_counts__reset zeros the perf_counts, and it should zero the
aggr too. This patch changes perf_counts__reset to non-static, and calls
it in evsel__reset_prev_raw_counts to reset the prev_raw_counts.
Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
Reviewed-by: Jiri Olsa <jolsa@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jin Yao <yao.jin@intel.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/20200520042737.24160-3-yao.jin@linux.intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util')
-rw-r--r-- | tools/perf/util/counts.c | 4 | ||||
-rw-r--r-- | tools/perf/util/counts.h | 1 | ||||
-rw-r--r-- | tools/perf/util/stat.c | 7 |
3 files changed, 6 insertions, 6 deletions
diff --git a/tools/perf/util/counts.c b/tools/perf/util/counts.c index 615c9f3e95cb..582f3aeaf5e4 100644 --- a/tools/perf/util/counts.c +++ b/tools/perf/util/counts.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 #include <errno.h> #include <stdlib.h> +#include <string.h> #include "evsel.h" #include "counts.h" #include <linux/zalloc.h> @@ -42,10 +43,11 @@ void perf_counts__delete(struct perf_counts *counts) } } -static void perf_counts__reset(struct perf_counts *counts) +void perf_counts__reset(struct perf_counts *counts) { xyarray__reset(counts->loaded); xyarray__reset(counts->values); + memset(&counts->aggr, 0, sizeof(struct perf_counts_values)); } void evsel__reset_counts(struct evsel *evsel) diff --git a/tools/perf/util/counts.h b/tools/perf/util/counts.h index 8f556c6d98fa..7ff36bf6d644 100644 --- a/tools/perf/util/counts.h +++ b/tools/perf/util/counts.h @@ -37,6 +37,7 @@ perf_counts__set_loaded(struct perf_counts *counts, int cpu, int thread, bool lo struct perf_counts *perf_counts__new(int ncpus, int nthreads); void perf_counts__delete(struct perf_counts *counts); +void perf_counts__reset(struct perf_counts *counts); void evsel__reset_counts(struct evsel *evsel); int evsel__alloc_counts(struct evsel *evsel, int ncpus, int nthreads); diff --git a/tools/perf/util/stat.c b/tools/perf/util/stat.c index f4a44df9b221..e397815f0dfb 100644 --- a/tools/perf/util/stat.c +++ b/tools/perf/util/stat.c @@ -163,11 +163,8 @@ static void evsel__free_prev_raw_counts(struct evsel *evsel) static void evsel__reset_prev_raw_counts(struct evsel *evsel) { - if (evsel->prev_raw_counts) { - evsel->prev_raw_counts->aggr.val = 0; - evsel->prev_raw_counts->aggr.ena = 0; - evsel->prev_raw_counts->aggr.run = 0; - } + if (evsel->prev_raw_counts) + perf_counts__reset(evsel->prev_raw_counts); } static int evsel__alloc_stats(struct evsel *evsel, bool alloc_raw) |