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 xyarray *values; 15 struct xyarray *loaded; 16 }; 17 18 19 static inline struct perf_counts_values* 20 perf_counts(struct perf_counts *counts, int cpu_map_idx, int thread) 21 { 22 return xyarray__entry(counts->values, cpu_map_idx, thread); 23 } 24 25 static inline bool 26 perf_counts__is_loaded(struct perf_counts *counts, int cpu_map_idx, int thread) 27 { 28 return *((bool *) xyarray__entry(counts->loaded, cpu_map_idx, thread)); 29 } 30 31 static inline void 32 perf_counts__set_loaded(struct perf_counts *counts, int cpu_map_idx, int thread, bool loaded) 33 { 34 *((bool *) xyarray__entry(counts->loaded, cpu_map_idx, thread)) = loaded; 35 } 36 37 struct perf_counts *perf_counts__new(int ncpus, int nthreads); 38 void perf_counts__delete(struct perf_counts *counts); 39 void perf_counts__reset(struct perf_counts *counts); 40 41 void evsel__reset_counts(struct evsel *evsel); 42 int evsel__alloc_counts(struct evsel *evsel); 43 void evsel__free_counts(struct evsel *evsel); 44 45 #endif /* __PERF_COUNTS_H */ 46