diff options
Diffstat (limited to 'drivers/oprofile')
-rw-r--r-- | drivers/oprofile/cpu_buffer.c | 23 |
1 files changed, 3 insertions, 20 deletions
diff --git a/drivers/oprofile/cpu_buffer.c b/drivers/oprofile/cpu_buffer.c index e9b1772a3a28..026f671ea558 100644 --- a/drivers/oprofile/cpu_buffer.c +++ b/drivers/oprofile/cpu_buffer.c | |||
@@ -42,8 +42,7 @@ void free_cpu_buffers(void) | |||
42 | vfree(cpu_buffer[i].buffer); | 42 | vfree(cpu_buffer[i].buffer); |
43 | } | 43 | } |
44 | } | 44 | } |
45 | 45 | ||
46 | |||
47 | int alloc_cpu_buffers(void) | 46 | int alloc_cpu_buffers(void) |
48 | { | 47 | { |
49 | int i; | 48 | int i; |
@@ -74,7 +73,6 @@ fail: | |||
74 | free_cpu_buffers(); | 73 | free_cpu_buffers(); |
75 | return -ENOMEM; | 74 | return -ENOMEM; |
76 | } | 75 | } |
77 | |||
78 | 76 | ||
79 | void start_cpu_work(void) | 77 | void start_cpu_work(void) |
80 | { | 78 | { |
@@ -93,7 +91,6 @@ void start_cpu_work(void) | |||
93 | } | 91 | } |
94 | } | 92 | } |
95 | 93 | ||
96 | |||
97 | void end_cpu_work(void) | 94 | void end_cpu_work(void) |
98 | { | 95 | { |
99 | int i; | 96 | int i; |
@@ -109,7 +106,6 @@ void end_cpu_work(void) | |||
109 | flush_scheduled_work(); | 106 | flush_scheduled_work(); |
110 | } | 107 | } |
111 | 108 | ||
112 | |||
113 | /* Resets the cpu buffer to a sane state. */ | 109 | /* Resets the cpu buffer to a sane state. */ |
114 | void cpu_buffer_reset(struct oprofile_cpu_buffer * cpu_buf) | 110 | void cpu_buffer_reset(struct oprofile_cpu_buffer * cpu_buf) |
115 | { | 111 | { |
@@ -121,7 +117,6 @@ void cpu_buffer_reset(struct oprofile_cpu_buffer * cpu_buf) | |||
121 | cpu_buf->last_task = NULL; | 117 | cpu_buf->last_task = NULL; |
122 | } | 118 | } |
123 | 119 | ||
124 | |||
125 | /* compute number of available slots in cpu_buffer queue */ | 120 | /* compute number of available slots in cpu_buffer queue */ |
126 | static unsigned long nr_available_slots(struct oprofile_cpu_buffer const * b) | 121 | static unsigned long nr_available_slots(struct oprofile_cpu_buffer const * b) |
127 | { | 122 | { |
@@ -134,7 +129,6 @@ static unsigned long nr_available_slots(struct oprofile_cpu_buffer const * b) | |||
134 | return tail + (b->buffer_size - head) - 1; | 129 | return tail + (b->buffer_size - head) - 1; |
135 | } | 130 | } |
136 | 131 | ||
137 | |||
138 | static void increment_head(struct oprofile_cpu_buffer * b) | 132 | static void increment_head(struct oprofile_cpu_buffer * b) |
139 | { | 133 | { |
140 | unsigned long new_head = b->head_pos + 1; | 134 | unsigned long new_head = b->head_pos + 1; |
@@ -149,10 +143,7 @@ static void increment_head(struct oprofile_cpu_buffer * b) | |||
149 | b->head_pos = 0; | 143 | b->head_pos = 0; |
150 | } | 144 | } |
151 | 145 | ||
152 | 146 | static inline void | |
153 | |||
154 | |||
155 | inline static void | ||
156 | add_sample(struct oprofile_cpu_buffer * cpu_buf, | 147 | add_sample(struct oprofile_cpu_buffer * cpu_buf, |
157 | unsigned long pc, unsigned long event) | 148 | unsigned long pc, unsigned long event) |
158 | { | 149 | { |
@@ -162,14 +153,12 @@ add_sample(struct oprofile_cpu_buffer * cpu_buf, | |||
162 | increment_head(cpu_buf); | 153 | increment_head(cpu_buf); |
163 | } | 154 | } |
164 | 155 | ||
165 | 156 | static inline void | |
166 | inline static void | ||
167 | add_code(struct oprofile_cpu_buffer * buffer, unsigned long value) | 157 | add_code(struct oprofile_cpu_buffer * buffer, unsigned long value) |
168 | { | 158 | { |
169 | add_sample(buffer, ESCAPE_CODE, value); | 159 | add_sample(buffer, ESCAPE_CODE, value); |
170 | } | 160 | } |
171 | 161 | ||
172 | |||
173 | /* This must be safe from any context. It's safe writing here | 162 | /* This must be safe from any context. It's safe writing here |
174 | * because of the head/tail separation of the writer and reader | 163 | * because of the head/tail separation of the writer and reader |
175 | * of the CPU buffer. | 164 | * of the CPU buffer. |
@@ -223,13 +212,11 @@ static int oprofile_begin_trace(struct oprofile_cpu_buffer * cpu_buf) | |||
223 | return 1; | 212 | return 1; |
224 | } | 213 | } |
225 | 214 | ||
226 | |||
227 | static void oprofile_end_trace(struct oprofile_cpu_buffer * cpu_buf) | 215 | static void oprofile_end_trace(struct oprofile_cpu_buffer * cpu_buf) |
228 | { | 216 | { |
229 | cpu_buf->tracing = 0; | 217 | cpu_buf->tracing = 0; |
230 | } | 218 | } |
231 | 219 | ||
232 | |||
233 | void oprofile_add_sample(struct pt_regs * const regs, unsigned long event) | 220 | void oprofile_add_sample(struct pt_regs * const regs, unsigned long event) |
234 | { | 221 | { |
235 | struct oprofile_cpu_buffer * cpu_buf = &cpu_buffer[smp_processor_id()]; | 222 | struct oprofile_cpu_buffer * cpu_buf = &cpu_buffer[smp_processor_id()]; |
@@ -251,14 +238,12 @@ void oprofile_add_sample(struct pt_regs * const regs, unsigned long event) | |||
251 | oprofile_end_trace(cpu_buf); | 238 | oprofile_end_trace(cpu_buf); |
252 | } | 239 | } |
253 | 240 | ||
254 | |||
255 | void oprofile_add_pc(unsigned long pc, int is_kernel, unsigned long event) | 241 | void oprofile_add_pc(unsigned long pc, int is_kernel, unsigned long event) |
256 | { | 242 | { |
257 | struct oprofile_cpu_buffer * cpu_buf = &cpu_buffer[smp_processor_id()]; | 243 | struct oprofile_cpu_buffer * cpu_buf = &cpu_buffer[smp_processor_id()]; |
258 | log_sample(cpu_buf, pc, is_kernel, event); | 244 | log_sample(cpu_buf, pc, is_kernel, event); |
259 | } | 245 | } |
260 | 246 | ||
261 | |||
262 | void oprofile_add_trace(unsigned long pc) | 247 | void oprofile_add_trace(unsigned long pc) |
263 | { | 248 | { |
264 | struct oprofile_cpu_buffer * cpu_buf = &cpu_buffer[smp_processor_id()]; | 249 | struct oprofile_cpu_buffer * cpu_buf = &cpu_buffer[smp_processor_id()]; |
@@ -283,8 +268,6 @@ void oprofile_add_trace(unsigned long pc) | |||
283 | add_sample(cpu_buf, pc, 0); | 268 | add_sample(cpu_buf, pc, 0); |
284 | } | 269 | } |
285 | 270 | ||
286 | |||
287 | |||
288 | /* | 271 | /* |
289 | * This serves to avoid cpu buffer overflow, and makes sure | 272 | * This serves to avoid cpu buffer overflow, and makes sure |
290 | * the task mortuary progresses | 273 | * the task mortuary progresses |