xref: /linux/tools/perf/util/counts.h (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2d809560bSJiri Olsa #ifndef __PERF_COUNTS_H
3d809560bSJiri Olsa #define __PERF_COUNTS_H
4d809560bSJiri Olsa 
52d64ae9bSArnaldo Carvalho de Melo #include <linux/types.h>
64b247fa7SJiri Olsa #include <internal/xyarray.h>
75c30af92SJiri Olsa #include <perf/evsel.h>
82d64ae9bSArnaldo Carvalho de Melo #include <stdbool.h>
92d64ae9bSArnaldo Carvalho de Melo 
102d64ae9bSArnaldo Carvalho de Melo struct evsel;
11d809560bSJiri Olsa 
12d809560bSJiri Olsa struct perf_counts {
13d809560bSJiri Olsa 	s8			  scaled;
14d809560bSJiri Olsa 	struct xyarray		  *values;
15df1d6856SJiri Olsa 	struct xyarray		  *loaded;
16d809560bSJiri Olsa };
17d809560bSJiri Olsa 
18d809560bSJiri Olsa 
19d809560bSJiri Olsa static inline struct perf_counts_values*
perf_counts(struct perf_counts * counts,int cpu_map_idx,int thread)20*7316268fSIan Rogers perf_counts(struct perf_counts *counts, int cpu_map_idx, int thread)
21d809560bSJiri Olsa {
22*7316268fSIan Rogers 	return xyarray__entry(counts->values, cpu_map_idx, thread);
23d809560bSJiri Olsa }
24d809560bSJiri Olsa 
25df1d6856SJiri Olsa static inline bool
perf_counts__is_loaded(struct perf_counts * counts,int cpu_map_idx,int thread)26*7316268fSIan Rogers perf_counts__is_loaded(struct perf_counts *counts, int cpu_map_idx, int thread)
27df1d6856SJiri Olsa {
28*7316268fSIan Rogers 	return *((bool *) xyarray__entry(counts->loaded, cpu_map_idx, thread));
29df1d6856SJiri Olsa }
30df1d6856SJiri Olsa 
31df1d6856SJiri Olsa static inline void
perf_counts__set_loaded(struct perf_counts * counts,int cpu_map_idx,int thread,bool loaded)32*7316268fSIan Rogers perf_counts__set_loaded(struct perf_counts *counts, int cpu_map_idx, int thread, bool loaded)
33df1d6856SJiri Olsa {
34*7316268fSIan Rogers 	*((bool *) xyarray__entry(counts->loaded, cpu_map_idx, thread)) = loaded;
35df1d6856SJiri Olsa }
36df1d6856SJiri Olsa 
37d809560bSJiri Olsa struct perf_counts *perf_counts__new(int ncpus, int nthreads);
38d809560bSJiri Olsa void perf_counts__delete(struct perf_counts *counts);
39cf4d9bd6SJin Yao void perf_counts__reset(struct perf_counts *counts);
40d809560bSJiri Olsa 
417d1e239eSArnaldo Carvalho de Melo void evsel__reset_counts(struct evsel *evsel);
422ca0a371SIan Rogers int evsel__alloc_counts(struct evsel *evsel);
437d1e239eSArnaldo Carvalho de Melo void evsel__free_counts(struct evsel *evsel);
44d809560bSJiri Olsa 
45d809560bSJiri Olsa #endif /* __PERF_COUNTS_H */
46