xref: /linux/tools/perf/util/counts.h (revision b6ebbac51bedf9e98e837688bc838f400196da5e)
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 };
16 
17 struct perf_counts {
18 	s8			  scaled;
19 	struct perf_counts_values aggr;
20 	struct xyarray		  *values;
21 };
22 
23 
24 static inline struct perf_counts_values*
25 perf_counts(struct perf_counts *counts, int cpu, int thread)
26 {
27 	return xyarray__entry(counts->values, cpu, thread);
28 }
29 
30 struct perf_counts *perf_counts__new(int ncpus, int nthreads);
31 void perf_counts__delete(struct perf_counts *counts);
32 
33 void perf_evsel__reset_counts(struct perf_evsel *evsel);
34 int perf_evsel__alloc_counts(struct perf_evsel *evsel, int ncpus, int nthreads);
35 void perf_evsel__free_counts(struct perf_evsel *evsel);
36 
37 #endif /* __PERF_COUNTS_H */
38