xref: /openbmc/linux/tools/perf/util/counts.h (revision 711aab1d)
1 #ifndef __PERF_COUNTS_H
2 #define __PERF_COUNTS_H
3 
4 #include "xyarray.h"
5 
6 struct perf_counts_values {
7 	union {
8 		struct {
9 			u64 val;
10 			u64 ena;
11 			u64 run;
12 		};
13 		u64 values[3];
14 	};
15 	bool	loaded;
16 };
17 
18 struct perf_counts {
19 	s8			  scaled;
20 	struct perf_counts_values aggr;
21 	struct xyarray		  *values;
22 };
23 
24 
25 static inline struct perf_counts_values*
26 perf_counts(struct perf_counts *counts, int cpu, int thread)
27 {
28 	return xyarray__entry(counts->values, cpu, thread);
29 }
30 
31 struct perf_counts *perf_counts__new(int ncpus, int nthreads);
32 void perf_counts__delete(struct perf_counts *counts);
33 
34 void perf_evsel__reset_counts(struct perf_evsel *evsel);
35 int perf_evsel__alloc_counts(struct perf_evsel *evsel, int ncpus, int nthreads);
36 void perf_evsel__free_counts(struct perf_evsel *evsel);
37 
38 #endif /* __PERF_COUNTS_H */
39