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 10struct evsel; 11 12struct perf_counts { 13 s8 scaled; 14 struct xyarray *values; 15 struct xyarray *loaded; 16}; 17 18 19static inline struct perf_counts_values* 20perf_counts(struct perf_counts *counts, int cpu_map_idx, int thread) 21{ 22 return xyarray__entry(counts->values, cpu_map_idx, thread); 23} 24 25static inline bool 26perf_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 31static inline void 32perf_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 37struct perf_counts *perf_counts__new(int ncpus, int nthreads); 38void perf_counts__delete(struct perf_counts *counts); 39void perf_counts__reset(struct perf_counts *counts); 40 41void evsel__reset_counts(struct evsel *evsel); 42int evsel__alloc_counts(struct evsel *evsel); 43void evsel__free_counts(struct evsel *evsel); 44 45#endif /* __PERF_COUNTS_H */ 46