1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __PERF_COUNTS_H 3 #define __PERF_COUNTS_H 4 5 #include <linux/types.h> 6 #include <internal/xyarray.h> 7 #include <perf/evsel.h> 8 #include <stdbool.h> 9 10 struct evsel; 11 12 struct perf_counts { 13 s8 scaled; 14 struct perf_counts_values aggr; 15 struct xyarray *values; 16 struct xyarray *loaded; 17 }; 18 19 20 static inline struct perf_counts_values* 21 perf_counts(struct perf_counts *counts, int cpu_map_idx, int thread) 22 { 23 return xyarray__entry(counts->values, cpu_map_idx, thread); 24 } 25 26 static inline bool 27 perf_counts__is_loaded(struct perf_counts *counts, int cpu_map_idx, int thread) 28 { 29 return *((bool *) xyarray__entry(counts->loaded, cpu_map_idx, thread)); 30 } 31 32 static inline void 33 perf_counts__set_loaded(struct perf_counts *counts, int cpu_map_idx, int thread, bool loaded) 34 { 35 *((bool *) xyarray__entry(counts->loaded, cpu_map_idx, thread)) = loaded; 36 } 37 38 struct perf_counts *perf_counts__new(int ncpus, int nthreads); 39 void perf_counts__delete(struct perf_counts *counts); 40 void perf_counts__reset(struct perf_counts *counts); 41 42 void evsel__reset_counts(struct evsel *evsel); 43 int evsel__alloc_counts(struct evsel *evsel); 44 void evsel__free_counts(struct evsel *evsel); 45 46 #endif /* __PERF_COUNTS_H */ 47