at v4.12-rc4 101 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#define CPUINFO_PROC {"cpu"} 24#endif 25 26#ifdef __s390__ 27#define CPUINFO_PROC {"vendor_id"} 28#endif 29 30#ifdef __sh__ 31#define CPUINFO_PROC {"cpu type"} 32#endif 33 34#ifdef __hppa__ 35#define CPUINFO_PROC {"cpu"} 36#endif 37 38#ifdef __sparc__ 39#define CPUINFO_PROC {"cpu"} 40#endif 41 42#ifdef __alpha__ 43#define CPUINFO_PROC {"cpu model"} 44#endif 45 46#ifdef __ia64__ 47#define cpu_relax() asm volatile ("hint @pause" ::: "memory") 48#define CPUINFO_PROC {"model name"} 49#endif 50 51#ifdef __arm__ 52#define CPUINFO_PROC {"model name", "Processor"} 53#endif 54 55#ifdef __aarch64__ 56#define cpu_relax() asm volatile("yield" ::: "memory") 57#endif 58 59#ifdef __mips__ 60#define CPUINFO_PROC {"cpu model"} 61#endif 62 63#ifdef __arc__ 64#define CPUINFO_PROC {"Processor"} 65#endif 66 67#ifdef __metag__ 68#define CPUINFO_PROC {"CPU"} 69#endif 70 71#ifdef __xtensa__ 72#define CPUINFO_PROC {"core ID"} 73#endif 74 75#ifdef __tile__ 76#define cpu_relax() asm volatile ("mfspr zero, PASS" ::: "memory") 77#define CPUINFO_PROC {"model name"} 78#endif 79 80#ifndef cpu_relax 81#define cpu_relax() barrier() 82#endif 83 84static inline int 85sys_perf_event_open(struct perf_event_attr *attr, 86 pid_t pid, int cpu, int group_fd, 87 unsigned long flags) 88{ 89 int fd; 90 91 fd = syscall(__NR_perf_event_open, attr, pid, cpu, 92 group_fd, flags); 93 94#ifdef HAVE_ATTR_TEST 95 if (unlikely(test_attr__enabled)) 96 test_attr__open(attr, pid, cpu, fd, group_fd, flags); 97#endif 98 return fd; 99} 100 101#endif /* _PERF_SYS_H */