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:
Родитель
72f02a947e
Коммит
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)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче