1 /* SPDX-License-Identifier: GPL-2.0 */ 1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __PERF_COUNTS_H 2 #ifndef __PERF_COUNTS_H 3 #define __PERF_COUNTS_H 3 #define __PERF_COUNTS_H 4 4 5 #include <linux/types.h> 5 #include <linux/types.h> 6 #include <internal/xyarray.h> 6 #include <internal/xyarray.h> 7 #include <perf/evsel.h> 7 #include <perf/evsel.h> 8 #include <stdbool.h> 8 #include <stdbool.h> 9 9 10 struct evsel; 10 struct evsel; 11 11 12 struct perf_counts { 12 struct perf_counts { 13 s8 scaled; 13 s8 scaled; 14 struct xyarray *values; 14 struct xyarray *values; 15 struct xyarray *loaded; 15 struct xyarray *loaded; 16 }; 16 }; 17 17 18 18 19 static inline struct perf_counts_values* 19 static inline struct perf_counts_values* 20 perf_counts(struct perf_counts *counts, int cp 20 perf_counts(struct perf_counts *counts, int cpu_map_idx, int thread) 21 { 21 { 22 return xyarray__entry(counts->values, 22 return xyarray__entry(counts->values, cpu_map_idx, thread); 23 } 23 } 24 24 25 static inline bool 25 static inline bool 26 perf_counts__is_loaded(struct perf_counts *cou 26 perf_counts__is_loaded(struct perf_counts *counts, int cpu_map_idx, int thread) 27 { 27 { 28 return *((bool *) xyarray__entry(count 28 return *((bool *) xyarray__entry(counts->loaded, cpu_map_idx, thread)); 29 } 29 } 30 30 31 static inline void 31 static inline void 32 perf_counts__set_loaded(struct perf_counts *co 32 perf_counts__set_loaded(struct perf_counts *counts, int cpu_map_idx, int thread, bool loaded) 33 { 33 { 34 *((bool *) xyarray__entry(counts->load 34 *((bool *) xyarray__entry(counts->loaded, cpu_map_idx, thread)) = loaded; 35 } 35 } 36 36 37 struct perf_counts *perf_counts__new(int ncpus 37 struct perf_counts *perf_counts__new(int ncpus, int nthreads); 38 void perf_counts__delete(struct perf_counts *c 38 void perf_counts__delete(struct perf_counts *counts); 39 void perf_counts__reset(struct perf_counts *co 39 void perf_counts__reset(struct perf_counts *counts); 40 40 41 void evsel__reset_counts(struct evsel *evsel); 41 void evsel__reset_counts(struct evsel *evsel); 42 int evsel__alloc_counts(struct evsel *evsel); 42 int evsel__alloc_counts(struct evsel *evsel); 43 void evsel__free_counts(struct evsel *evsel); 43 void evsel__free_counts(struct evsel *evsel); 44 44 45 #endif /* __PERF_COUNTS_H */ 45 #endif /* __PERF_COUNTS_H */ 46 46
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.