Blame view
tools/perf/perf.h
4.97 KB
6eda5838b perfcounter tools... |
1 2 |
#ifndef _PERF_PERF_H #define _PERF_PERF_H |
895f0edc3 perf top: Export ... |
3 4 5 |
struct winsize; void get_term_dimensions(struct winsize *ws); |
11d1578f9 perf_counter: Add... |
6 7 8 9 |
#if defined(__i386__) #include "../../arch/x86/include/asm/unistd.h" #define rmb() asm volatile("lock; addl $0,0(%%esp)" ::: "memory") #define cpu_relax() asm volatile("rep; nop" ::: "memory"); |
fbe96f29c perf tools: Make ... |
10 |
#define CPUINFO_PROC "model name" |
11d1578f9 perf_counter: Add... |
11 12 13 |
#endif #if defined(__x86_64__) |
1a482f38c perf_counter: Fix... |
14 15 16 |
#include "../../arch/x86/include/asm/unistd.h" #define rmb() asm volatile("lfence" ::: "memory") #define cpu_relax() asm volatile("rep; nop" ::: "memory"); |
fbe96f29c perf tools: Make ... |
17 |
#define CPUINFO_PROC "model name" |
1a482f38c perf_counter: Fix... |
18 19 20 21 22 23 |
#endif #ifdef __powerpc__ #include "../../arch/powerpc/include/asm/unistd.h" #define rmb() asm volatile ("sync" ::: "memory") #define cpu_relax() asm volatile ("" ::: "memory"); |
fbe96f29c perf tools: Make ... |
24 |
#define CPUINFO_PROC "cpu" |
1a482f38c perf_counter: Fix... |
25 |
#endif |
12310e9c1 [S390] Enable tic... |
26 27 28 29 30 |
#ifdef __s390__ #include "../../arch/s390/include/asm/unistd.h" #define rmb() asm volatile("bcr 15,0" ::: "memory") #define cpu_relax() asm volatile("" ::: "memory"); #endif |
febe83453 perf_counter tool... |
31 32 33 34 35 36 37 38 |
#ifdef __sh__ #include "../../arch/sh/include/asm/unistd.h" #if defined(__SH4A__) || defined(__SH5__) # define rmb() asm volatile("synco" ::: "memory") #else # define rmb() asm volatile("" ::: "memory") #endif #define cpu_relax() asm volatile("" ::: "memory") |
fbe96f29c perf tools: Make ... |
39 |
#define CPUINFO_PROC "cpu type" |
febe83453 perf_counter tool... |
40 |
#endif |
2d4618dce parisc: perf: wir... |
41 42 43 44 |
#ifdef __hppa__ #include "../../arch/parisc/include/asm/unistd.h" #define rmb() asm volatile("" ::: "memory") #define cpu_relax() asm volatile("" ::: "memory"); |
fbe96f29c perf tools: Make ... |
45 |
#define CPUINFO_PROC "cpu" |
2d4618dce parisc: perf: wir... |
46 |
#endif |
825c9fb47 sparc: add basic ... |
47 48 49 50 |
#ifdef __sparc__ #include "../../arch/sparc/include/asm/unistd.h" #define rmb() asm volatile("":::"memory") #define cpu_relax() asm volatile("":::"memory") |
fbe96f29c perf tools: Make ... |
51 |
#define CPUINFO_PROC "cpu" |
825c9fb47 sparc: add basic ... |
52 |
#endif |
fcd14b320 perf tools, Alpha... |
53 54 55 56 |
#ifdef __alpha__ #include "../../arch/alpha/include/asm/unistd.h" #define rmb() asm volatile("mb" ::: "memory") #define cpu_relax() asm volatile("" ::: "memory") |
fbe96f29c perf tools: Make ... |
57 |
#define CPUINFO_PROC "cpu model" |
fcd14b320 perf tools, Alpha... |
58 |
#endif |
11ada26c7 perf tools: Add i... |
59 60 61 62 |
#ifdef __ia64__ #include "../../arch/ia64/include/asm/unistd.h" #define rmb() asm volatile ("mf" ::: "memory") #define cpu_relax() asm volatile ("hint @pause" ::: "memory") |
fbe96f29c perf tools: Make ... |
63 |
#define CPUINFO_PROC "model name" |
11ada26c7 perf tools: Add i... |
64 |
#endif |
58e9f9413 perf tools: Allow... |
65 66 67 68 69 70 |
#ifdef __arm__ #include "../../arch/arm/include/asm/unistd.h" /* * Use the __kuser_memory_barrier helper in the CPU helper page. See * arch/arm/kernel/entry-armv.S in the kernel source for details. */ |
da7196e1f perf, ARM: Modify... |
71 |
#define rmb() ((void(*)(void))0xffff0fa0)() |
58e9f9413 perf tools: Allow... |
72 |
#define cpu_relax() asm volatile("":::"memory") |
fbe96f29c perf tools: Make ... |
73 |
#define CPUINFO_PROC "Processor" |
58e9f9413 perf tools: Allow... |
74 |
#endif |
c1e028ef4 perf, MIPS: Suppo... |
75 76 77 78 79 80 81 82 83 84 85 86 |
#ifdef __mips__ #include "../../arch/mips/include/asm/unistd.h" #define rmb() asm volatile( \ ".set mips2 \t" \ "sync \t" \ ".set mips0" \ : /* no output */ \ : /* no input */ \ : "memory") #define cpu_relax() asm volatile("" ::: "memory") |
fbe96f29c perf tools: Make ... |
87 |
#define CPUINFO_PROC "cpu model" |
c1e028ef4 perf, MIPS: Suppo... |
88 |
#endif |
1a482f38c perf_counter: Fix... |
89 90 91 92 |
#include <time.h> #include <unistd.h> #include <sys/types.h> #include <sys/syscall.h> |
cdd6c482c perf: Do the big ... |
93 |
#include "../../include/linux/perf_event.h" |
7c6a1c65b perf_counter tool... |
94 |
#include "util/types.h" |
8035458fb perf options: Typ... |
95 |
#include <stdbool.h> |
1a482f38c perf_counter: Fix... |
96 |
|
70082dd92 perf evsel: Intro... |
97 98 99 100 101 102 103 104 105 106 107 108 109 |
struct perf_mmap { void *base; int mask; unsigned int prev; }; static inline unsigned int perf_mmap__read_head(struct perf_mmap *mm) { struct perf_event_mmap_page *pc = mm->base; int head = pc->data_head; rmb(); return head; } |
115d2d896 perf record: Move... |
110 111 112 113 114 115 116 117 118 119 120 |
static inline void perf_mmap__write_tail(struct perf_mmap *md, unsigned long tail) { struct perf_event_mmap_page *pc = md->base; /* * ensure all reads are done before we write the tail out. */ /* mb(); */ pc->data_tail = tail; } |
6eda5838b perfcounter tools... |
121 |
/* |
cdd6c482c perf: Do the big ... |
122 |
* prctl(PR_TASK_PERF_EVENTS_DISABLE) will (cheaply) disable all |
6eda5838b perfcounter tools... |
123 124 |
* counters in the current task. */ |
cdd6c482c perf: Do the big ... |
125 126 |
#define PR_TASK_PERF_EVENTS_DISABLE 31 #define PR_TASK_PERF_EVENTS_ENABLE 32 |
6eda5838b perfcounter tools... |
127 |
|
a92e70237 perfcounter tools... |
128 129 130 131 132 133 134 135 136 137 138 |
#ifndef NSEC_PER_SEC # define NSEC_PER_SEC 1000000000ULL #endif static inline unsigned long long rdclock(void) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); return ts.tv_sec * 1000000000ULL + ts.tv_nsec; } |
6eda5838b perfcounter tools... |
139 140 141 142 143 144 |
/* * Pick up some kernel type conventions: */ #define __user #define asmlinkage |
6eda5838b perfcounter tools... |
145 146 147 148 149 150 151 152 |
#define unlikely(x) __builtin_expect(!!(x), 0) #define min(x, y) ({ \ typeof(x) _min1 = (x); \ typeof(y) _min2 = (y); \ (void) (&_min1 == &_min2); \ _min1 < _min2 ? _min1 : _min2; }) static inline int |
cdd6c482c perf: Do the big ... |
153 |
sys_perf_event_open(struct perf_event_attr *attr, |
6eda5838b perfcounter tools... |
154 155 156 |
pid_t pid, int cpu, int group_fd, unsigned long flags) { |
974802eaa perf_counter: Add... |
157 |
attr->size = sizeof(*attr); |
cdd6c482c perf: Do the big ... |
158 |
return syscall(__NR_perf_event_open, attr, pid, cpu, |
6eda5838b perfcounter tools... |
159 160 |
group_fd, flags); } |
85a9f9200 perf_counter tool... |
161 162 |
#define MAX_COUNTERS 256 #define MAX_NR_CPUS 256 |
6eda5838b perfcounter tools... |
163 |
|
8cb76d99d perf_counter tool... |
164 165 166 |
struct ip_callchain { u64 nr; u64 ips[0]; |
f5970550d perf_counter tool... |
167 |
}; |
8035458fb perf options: Typ... |
168 |
extern bool perf_host, perf_guest; |
fbe96f29c perf tools: Make ... |
169 |
extern const char perf_version_string[]; |
a1645ce12 perf: 'perf kvm' ... |
170 |
|
3af6e3386 perf ui browser: ... |
171 |
void pthread__unblock_sigwinch(void); |
0f82ebc45 perf evsel: Intro... |
172 173 174 175 |
struct perf_record_opts { pid_t target_pid; pid_t target_tid; bool call_graph; |
ed80f5813 perf record: Move... |
176 |
bool group; |
0f82ebc45 perf evsel: Intro... |
177 178 179 180 |
bool inherit_stat; bool no_delay; bool no_inherit; bool no_samples; |
35b9d88ec perf evlist: Intr... |
181 |
bool pipe_output; |
0f82ebc45 perf evsel: Intro... |
182 183 184 185 186 |
bool raw_samples; bool sample_address; bool sample_time; bool sample_id_all_avail; bool system_wide; |
3e76ac78b perf record: Add ... |
187 |
bool period; |
0f82ebc45 perf evsel: Intro... |
188 |
unsigned int freq; |
01c2d99bc perf record: Move... |
189 |
unsigned int mmap_pages; |
0f82ebc45 perf evsel: Intro... |
190 191 192 193 194 |
unsigned int user_freq; u64 default_interval; u64 user_interval; const char *cpu_list; }; |
6eda5838b perfcounter tools... |
195 |
#endif |