/* Do not edit this file. It was automatically generated. */ #ifndef HEADER_PerfCounter #define HEADER_PerfCounter /* * This file is based on tiptop. * by Erven ROHOU * Copyright (c) 2011, 2012, 2014 Inria * License: GNU General Public License version 2. */ #include #include #include #include #include #include // The sys_perf_counter_open syscall and header files changed names // between Linux 2.6.31 and 2.6.32. Do the mangling here. #ifdef HAVE_LINUX_PERF_COUNTER_H #include #define STRUCT_NAME perf_counter_attr #define SYSCALL_NUM __NR_perf_counter_open #elif HAVE_LINUX_PERF_EVENT_H #include #define STRUCT_NAME perf_event_attr #define SYSCALL_NUM __NR_perf_event_open #else #error Sorry, performance counters not supported on this system. #endif typedef struct PerfCounter_ { struct STRUCT_NAME events; pid_t pid; int fd; uint64_t prevValue; uint64_t value; } PerfCounter; #define PerfCounter_delta(pc_) ((pc_)->value - (pc_)->prevValue) extern int PerfCounter_openFds; PerfCounter* PerfCounter_new(pid_t pid, uint32_t type, uint64_t config); void PerfCounter_delete(PerfCounter* this); bool PerfCounter_read(PerfCounter* this); #endif