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>
This commit is contained in:
		
							parent
							
								
									72f02a947e
								
							
						
					
					
						commit
						cf4d9bd67c
					
				| @ -1,6 +1,7 @@ | |||||||
| // SPDX-License-Identifier: GPL-2.0
 | // SPDX-License-Identifier: GPL-2.0
 | ||||||
| #include <errno.h> | #include <errno.h> | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
|  | #include <string.h> | ||||||
| #include "evsel.h" | #include "evsel.h" | ||||||
| #include "counts.h" | #include "counts.h" | ||||||
| #include <linux/zalloc.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->loaded); | ||||||
| 	xyarray__reset(counts->values); | 	xyarray__reset(counts->values); | ||||||
|  | 	memset(&counts->aggr, 0, sizeof(struct perf_counts_values)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void evsel__reset_counts(struct evsel *evsel) | void evsel__reset_counts(struct evsel *evsel) | ||||||
|  | |||||||
| @ -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); | struct perf_counts *perf_counts__new(int ncpus, int nthreads); | ||||||
| void perf_counts__delete(struct perf_counts *counts); | void perf_counts__delete(struct perf_counts *counts); | ||||||
|  | void perf_counts__reset(struct perf_counts *counts); | ||||||
| 
 | 
 | ||||||
| void evsel__reset_counts(struct evsel *evsel); | void evsel__reset_counts(struct evsel *evsel); | ||||||
| int evsel__alloc_counts(struct evsel *evsel, int ncpus, int nthreads); | int evsel__alloc_counts(struct evsel *evsel, int ncpus, int nthreads); | ||||||
|  | |||||||
| @ -163,11 +163,8 @@ static void evsel__free_prev_raw_counts(struct evsel *evsel) | |||||||
| 
 | 
 | ||||||
| static void evsel__reset_prev_raw_counts(struct evsel *evsel) | static void evsel__reset_prev_raw_counts(struct evsel *evsel) | ||||||
| { | { | ||||||
| 	if (evsel->prev_raw_counts) { | 	if (evsel->prev_raw_counts) | ||||||
| 		evsel->prev_raw_counts->aggr.val = 0; | 		perf_counts__reset(evsel->prev_raw_counts); | ||||||
| 		evsel->prev_raw_counts->aggr.ena = 0; |  | ||||||
| 		evsel->prev_raw_counts->aggr.run = 0; |  | ||||||
|        } |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int evsel__alloc_stats(struct evsel *evsel, bool alloc_raw) | static int evsel__alloc_stats(struct evsel *evsel, bool alloc_raw) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user