50 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright 2013, Michael Ellerman, IBM Corp.4 */5 6#ifndef _SELFTESTS_POWERPC_PMU_EVENT_H7#define _SELFTESTS_POWERPC_PMU_EVENT_H8 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 */50