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 15 struct 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 32 void event_init(struct event *e, u64 config); 33 void event_init_named(struct event *e, u64 config, char *name); 34 void event_init_opts(struct event *e, u64 config, int type, char *name); 35 void event_init_sampling(struct event *e, u64 config); 36 int event_open_with_options(struct event *e, pid_t pid, int cpu, int group_fd); 37 int event_open_with_group(struct event *e, int group_fd); 38 int event_open_with_pid(struct event *e, pid_t pid); 39 int event_open_with_cpu(struct event *e, int cpu); 40 int event_open(struct event *e); 41 void event_close(struct event *e); 42 int event_enable(struct event *e); 43 int event_disable(struct event *e); 44 int event_reset(struct event *e); 45 int event_read(struct event *e); 46 void event_report_justified(struct event *e, int name_width, int result_width); 47 void event_report(struct event *e); 48 49 #endif /* _SELFTESTS_POWERPC_PMU_EVENT_H */ 50