at v4.8-rc1 102 lines 1.9 kB view raw
1#ifndef _PERF_SYS_H 2#define _PERF_SYS_H 3 4#include <unistd.h> 5#include <sys/types.h> 6#include <sys/syscall.h> 7#include <linux/types.h> 8#include <linux/compiler.h> 9#include <linux/perf_event.h> 10#include <asm/barrier.h> 11 12#if defined(__i386__) 13#define cpu_relax() asm volatile("rep; nop" ::: "memory"); 14#define CPUINFO_PROC {"model name"} 15#endif 16 17#if defined(__x86_64__) 18#define cpu_relax() asm volatile("rep; nop" ::: "memory"); 19#define CPUINFO_PROC {"model name"} 20#endif 21 22#ifdef __powerpc__ 23#include "../../arch/powerpc/include/uapi/asm/unistd.h" 24#define CPUINFO_PROC {"cpu"} 25#endif 26 27#ifdef __s390__ 28#define CPUINFO_PROC {"vendor_id"} 29#endif 30 31#ifdef __sh__ 32#define CPUINFO_PROC {"cpu type"} 33#endif 34 35#ifdef __hppa__ 36#define CPUINFO_PROC {"cpu"} 37#endif 38 39#ifdef __sparc__ 40#define CPUINFO_PROC {"cpu"} 41#endif 42 43#ifdef __alpha__ 44#define CPUINFO_PROC {"cpu model"} 45#endif 46 47#ifdef __ia64__ 48#define cpu_relax() asm volatile ("hint @pause" ::: "memory") 49#define CPUINFO_PROC {"model name"} 50#endif 51 52#ifdef __arm__ 53#define CPUINFO_PROC {"model name", "Processor"} 54#endif 55 56#ifdef __aarch64__ 57#define cpu_relax() asm volatile("yield" ::: "memory") 58#endif 59 60#ifdef __mips__ 61#define CPUINFO_PROC {"cpu model"} 62#endif 63 64#ifdef __arc__ 65#define CPUINFO_PROC {"Processor"} 66#endif 67 68#ifdef __metag__ 69#define CPUINFO_PROC {"CPU"} 70#endif 71 72#ifdef __xtensa__ 73#define CPUINFO_PROC {"core ID"} 74#endif 75 76#ifdef __tile__ 77#define cpu_relax() asm volatile ("mfspr zero, PASS" ::: "memory") 78#define CPUINFO_PROC {"model name"} 79#endif 80 81#ifndef cpu_relax 82#define cpu_relax() barrier() 83#endif 84 85static inline int 86sys_perf_event_open(struct perf_event_attr *attr, 87 pid_t pid, int cpu, int group_fd, 88 unsigned long flags) 89{ 90 int fd; 91 92 fd = syscall(__NR_perf_event_open, attr, pid, cpu, 93 group_fd, flags); 94 95#ifdef HAVE_ATTR_TEST 96 if (unlikely(test_attr__enabled)) 97 test_attr__open(attr, pid, cpu, fd, group_fd, flags); 98#endif 99 return fd; 100} 101 102#endif /* _PERF_SYS_H */