cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

counts.h (1221B)


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