1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef __PERF_COUNTS_H 3#define __PERF_COUNTS_H 4 5#include "xyarray.h" 6 7struct perf_counts_values { 8 union { 9 struct { 10 u64 val; 11 u64 ena; 12 u64 run; 13 }; 14 u64 values[3]; 15 }; 16 bool loaded; 17}; 18 19struct perf_counts { 20 s8 scaled; 21 struct perf_counts_values aggr; 22 struct xyarray *values; 23}; 24 25 26static inline struct perf_counts_values* 27perf_counts(struct perf_counts *counts, int cpu, int thread) 28{ 29 return xyarray__entry(counts->values, cpu, thread); 30} 31 32struct perf_counts *perf_counts__new(int ncpus, int nthreads); 33void perf_counts__delete(struct perf_counts *counts); 34 35void perf_evsel__reset_counts(struct perf_evsel *evsel); 36int perf_evsel__alloc_counts(struct perf_evsel *evsel, int ncpus, int nthreads); 37void perf_evsel__free_counts(struct perf_evsel *evsel); 38 39#endif /* __PERF_COUNTS_H */ 40