Commit | Line | Data |
---|---|---|
43599d1f JO |
1 | #ifndef _PERF_SYS_H |
2 | #define _PERF_SYS_H | |
3 | ||
82baa0eb JO |
4 | #include <unistd.h> |
5 | #include <sys/types.h> | |
6 | #include <sys/syscall.h> | |
7 | #include <linux/types.h> | |
14f0652b | 8 | #include <linux/compiler.h> |
82baa0eb | 9 | #include <linux/perf_event.h> |
361c564e | 10 | #include <asm/barrier.h> |
43599d1f JO |
11 | |
12 | #if defined(__i386__) | |
43599d1f | 13 | #define cpu_relax() asm volatile("rep; nop" ::: "memory"); |
493c3031 | 14 | #define CPUINFO_PROC {"model name"} |
43599d1f JO |
15 | #endif |
16 | ||
17 | #if defined(__x86_64__) | |
43599d1f | 18 | #define cpu_relax() asm volatile("rep; nop" ::: "memory"); |
493c3031 | 19 | #define CPUINFO_PROC {"model name"} |
43599d1f JO |
20 | #endif |
21 | ||
22 | #ifdef __powerpc__ | |
23 | #include "../../arch/powerpc/include/uapi/asm/unistd.h" | |
493c3031 | 24 | #define CPUINFO_PROC {"cpu"} |
43599d1f JO |
25 | #endif |
26 | ||
27 | #ifdef __s390__ | |
493c3031 | 28 | #define CPUINFO_PROC {"vendor_id"} |
43599d1f JO |
29 | #endif |
30 | ||
31 | #ifdef __sh__ | |
493c3031 | 32 | #define CPUINFO_PROC {"cpu type"} |
43599d1f JO |
33 | #endif |
34 | ||
35 | #ifdef __hppa__ | |
493c3031 | 36 | #define CPUINFO_PROC {"cpu"} |
43599d1f JO |
37 | #endif |
38 | ||
39 | #ifdef __sparc__ | |
493c3031 | 40 | #define CPUINFO_PROC {"cpu"} |
43599d1f JO |
41 | #endif |
42 | ||
43 | #ifdef __alpha__ | |
493c3031 | 44 | #define CPUINFO_PROC {"cpu model"} |
43599d1f JO |
45 | #endif |
46 | ||
47 | #ifdef __ia64__ | |
43599d1f | 48 | #define cpu_relax() asm volatile ("hint @pause" ::: "memory") |
493c3031 | 49 | #define CPUINFO_PROC {"model name"} |
43599d1f JO |
50 | #endif |
51 | ||
52 | #ifdef __arm__ | |
493c3031 | 53 | #define CPUINFO_PROC {"model name", "Processor"} |
43599d1f JO |
54 | #endif |
55 | ||
56 | #ifdef __aarch64__ | |
43599d1f JO |
57 | #define cpu_relax() asm volatile("yield" ::: "memory") |
58 | #endif | |
59 | ||
60 | #ifdef __mips__ | |
493c3031 | 61 | #define CPUINFO_PROC {"cpu model"} |
43599d1f JO |
62 | #endif |
63 | ||
64 | #ifdef __arc__ | |
493c3031 | 65 | #define CPUINFO_PROC {"Processor"} |
43599d1f JO |
66 | #endif |
67 | ||
68 | #ifdef __metag__ | |
493c3031 | 69 | #define CPUINFO_PROC {"CPU"} |
43599d1f JO |
70 | #endif |
71 | ||
72 | #ifdef __xtensa__ | |
493c3031 | 73 | #define CPUINFO_PROC {"core ID"} |
43599d1f JO |
74 | #endif |
75 | ||
76 | #ifdef __tile__ | |
43599d1f | 77 | #define cpu_relax() asm volatile ("mfspr zero, PASS" ::: "memory") |
493c3031 | 78 | #define CPUINFO_PROC {"model name"} |
43599d1f JO |
79 | #endif |
80 | ||
43599d1f JO |
81 | #ifndef cpu_relax |
82 | #define cpu_relax() barrier() | |
83 | #endif | |
84 | ||
82baa0eb JO |
85 | static inline int |
86 | sys_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 | ||
43599d1f | 102 | #endif /* _PERF_SYS_H */ |