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

event.h (1398B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Copyright 2013, Michael Ellerman, IBM Corp.
      4 */
      5
      6#ifndef _SELFTESTS_POWERPC_PMU_EVENT_H
      7#define _SELFTESTS_POWERPC_PMU_EVENT_H
      8
      9#include <unistd.h>
     10#include <linux/perf_event.h>
     11
     12#include "utils.h"
     13
     14
     15struct event {
     16	struct perf_event_attr attr;
     17	char *name;
     18	int fd;
     19	/* This must match the read_format we use */
     20	struct {
     21		u64 value;
     22		u64 running;
     23		u64 enabled;
     24	} result;
     25	/*
     26	 * mmap buffer used while recording sample.
     27	 * Accessed as "struct perf_event_mmap_page"
     28	 */
     29	void *mmap_buffer;
     30};
     31
     32void event_init(struct event *e, u64 config);
     33void event_init_named(struct event *e, u64 config, char *name);
     34void event_init_opts(struct event *e, u64 config, int type, char *name);
     35void event_init_sampling(struct event *e, u64 config);
     36int event_open_with_options(struct event *e, pid_t pid, int cpu, int group_fd);
     37int event_open_with_group(struct event *e, int group_fd);
     38int event_open_with_pid(struct event *e, pid_t pid);
     39int event_open_with_cpu(struct event *e, int cpu);
     40int event_open(struct event *e);
     41void event_close(struct event *e);
     42int event_enable(struct event *e);
     43int event_disable(struct event *e);
     44int event_reset(struct event *e);
     45int event_read(struct event *e);
     46void event_report_justified(struct event *e, int name_width, int result_width);
     47void event_report(struct event *e);
     48
     49#endif /* _SELFTESTS_POWERPC_PMU_EVENT_H */