perf stat: Move perf_counts struct and functions into separate object
Moving 'struct perf_counts' and associated functions into separate object, so we could remove stat.c object dependency from python build. It makes the python code to build properly, because it fails to load due to missing stat-shadow.c object dependency if some patches from Kan Liang are applied. So apply this one, then Kan's. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Kan Liang <kan.liang@intel.com> Cc: Namhyung Kim <namhyung@kernel.org> Link: http://lkml.kernel.org/r/20150807105103.GB8624@krava.brq.redhat.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:

committed by
Arnaldo Carvalho de Melo

parent
f1d800bf61
commit
d809560b36
52
tools/perf/util/counts.c
Normal file
52
tools/perf/util/counts.c
Normal file
@@ -0,0 +1,52 @@
|
||||
#include <stdlib.h>
|
||||
#include "evsel.h"
|
||||
#include "counts.h"
|
||||
|
||||
struct perf_counts *perf_counts__new(int ncpus, int nthreads)
|
||||
{
|
||||
struct perf_counts *counts = zalloc(sizeof(*counts));
|
||||
|
||||
if (counts) {
|
||||
struct xyarray *values;
|
||||
|
||||
values = xyarray__new(ncpus, nthreads, sizeof(struct perf_counts_values));
|
||||
if (!values) {
|
||||
free(counts);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
counts->values = values;
|
||||
}
|
||||
|
||||
return counts;
|
||||
}
|
||||
|
||||
void perf_counts__delete(struct perf_counts *counts)
|
||||
{
|
||||
if (counts) {
|
||||
xyarray__delete(counts->values);
|
||||
free(counts);
|
||||
}
|
||||
}
|
||||
|
||||
static void perf_counts__reset(struct perf_counts *counts)
|
||||
{
|
||||
xyarray__reset(counts->values);
|
||||
}
|
||||
|
||||
void perf_evsel__reset_counts(struct perf_evsel *evsel)
|
||||
{
|
||||
perf_counts__reset(evsel->counts);
|
||||
}
|
||||
|
||||
int perf_evsel__alloc_counts(struct perf_evsel *evsel, int ncpus, int nthreads)
|
||||
{
|
||||
evsel->counts = perf_counts__new(ncpus, nthreads);
|
||||
return evsel->counts != NULL ? 0 : -ENOMEM;
|
||||
}
|
||||
|
||||
void perf_evsel__free_counts(struct perf_evsel *evsel)
|
||||
{
|
||||
perf_counts__delete(evsel->counts);
|
||||
evsel->counts = NULL;
|
||||
}
|
Reference in New Issue
Block a user