blob: 0a256065156bc0f94ad9334440d7eeae2ee6a872 [file] [log] [blame]
/* -*- Mode: C; tab-width: 8; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
#include "util.h"
static int sys_perf_event_open(struct perf_event_attr* attr, pid_t pid, int cpu,
int group_fd, unsigned long flags) {
return syscall(SYS_perf_event_open, attr, pid, cpu, group_fd, flags);
}
int main(void) {
struct perf_event_attr attr;
void* p;
size_t page_size = sysconf(_SC_PAGESIZE);
int counter_fd;
memset(&attr, 0, sizeof(attr));
attr.size = sizeof(attr);
attr.type = PERF_TYPE_SOFTWARE;
attr.config = PERF_COUNT_SW_CPU_CLOCK;
attr.sample_period = 1000000;
attr.sample_type = PERF_SAMPLE_IP;
counter_fd = sys_perf_event_open(&attr, 0 /*self*/, -1 /*any cpu*/, -1, 0);
test_assert(0 <= counter_fd);
p = mmap(NULL, 3*page_size, PROT_READ | PROT_WRITE, MAP_SHARED, counter_fd, 0);
test_assert(p == MAP_FAILED);
test_assert(errno == ENODEV);
atomic_puts("EXIT-SUCCESS");
return 0;
}