Commit b6f11df26fdc28324cf9c9e3b77f2dc985c1bb13
Committed by
Ingo Molnar
1 parent
51a763dd84
Exists in
master
and in
7 other branches
trace: Call tracing_reset_online_cpus before tracer->init()
Impact: cleanup To make it easy for ftrace plugin writers, as this was open coded in the existing plugins Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Acked-by: Frédéric Weisbecker <fweisbec@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Showing 11 changed files with 25 additions and 47 deletions Side-by-side Diff
- block/blktrace.c
- kernel/trace/trace.c
- kernel/trace/trace.h
- kernel/trace/trace_branch.c
- kernel/trace/trace_functions.c
- kernel/trace/trace_functions_graph.c
- kernel/trace/trace_hw_branches.c
- kernel/trace/trace_nop.c
- kernel/trace/trace_sched_switch.c
- kernel/trace/trace_selftest.c
- kernel/trace/trace_sysprof.c
block/blktrace.c
kernel/trace/trace.c
... | ... | @@ -2171,6 +2171,12 @@ |
2171 | 2171 | return simple_read_from_buffer(ubuf, cnt, ppos, buf, r); |
2172 | 2172 | } |
2173 | 2173 | |
2174 | +int tracer_init(struct tracer *t, struct trace_array *tr) | |
2175 | +{ | |
2176 | + tracing_reset_online_cpus(tr); | |
2177 | + return t->init(tr); | |
2178 | +} | |
2179 | + | |
2174 | 2180 | static int tracing_set_tracer(const char *buf) |
2175 | 2181 | { |
2176 | 2182 | struct trace_array *tr = &global_trace; |
... | ... | @@ -2195,7 +2201,7 @@ |
2195 | 2201 | |
2196 | 2202 | current_trace = t; |
2197 | 2203 | if (t->init) { |
2198 | - ret = t->init(tr); | |
2204 | + ret = tracer_init(t, tr); | |
2199 | 2205 | if (ret) |
2200 | 2206 | goto out; |
2201 | 2207 | } |
kernel/trace/trace.h
kernel/trace/trace_branch.c
kernel/trace/trace_functions.c
... | ... | @@ -24,32 +24,21 @@ |
24 | 24 | static void tracing_start_function_trace(void); |
25 | 25 | static void tracing_stop_function_trace(void); |
26 | 26 | |
27 | -static void start_function_trace(struct trace_array *tr) | |
27 | +static int function_trace_init(struct trace_array *tr) | |
28 | 28 | { |
29 | 29 | func_trace = tr; |
30 | 30 | tr->cpu = get_cpu(); |
31 | - tracing_reset_online_cpus(tr); | |
32 | 31 | put_cpu(); |
33 | 32 | |
34 | 33 | tracing_start_cmdline_record(); |
35 | 34 | tracing_start_function_trace(); |
36 | -} | |
37 | - | |
38 | -static void stop_function_trace(struct trace_array *tr) | |
39 | -{ | |
40 | - tracing_stop_function_trace(); | |
41 | - tracing_stop_cmdline_record(); | |
42 | -} | |
43 | - | |
44 | -static int function_trace_init(struct trace_array *tr) | |
45 | -{ | |
46 | - start_function_trace(tr); | |
47 | 35 | return 0; |
48 | 36 | } |
49 | 37 | |
50 | 38 | static void function_trace_reset(struct trace_array *tr) |
51 | 39 | { |
52 | - stop_function_trace(tr); | |
40 | + tracing_stop_function_trace(); | |
41 | + tracing_stop_cmdline_record(); | |
53 | 42 | } |
54 | 43 | |
55 | 44 | static void function_trace_start(struct trace_array *tr) |
kernel/trace/trace_functions_graph.c
kernel/trace/trace_hw_branches.c
kernel/trace/trace_nop.c
kernel/trace/trace_sched_switch.c
... | ... | @@ -185,12 +185,6 @@ |
185 | 185 | ctx_trace = tr; |
186 | 186 | } |
187 | 187 | |
188 | -static void start_sched_trace(struct trace_array *tr) | |
189 | -{ | |
190 | - tracing_reset_online_cpus(tr); | |
191 | - tracing_start_sched_switch_record(); | |
192 | -} | |
193 | - | |
194 | 188 | static void stop_sched_trace(struct trace_array *tr) |
195 | 189 | { |
196 | 190 | tracing_stop_sched_switch_record(); |
... | ... | @@ -199,7 +193,7 @@ |
199 | 193 | static int sched_switch_trace_init(struct trace_array *tr) |
200 | 194 | { |
201 | 195 | ctx_trace = tr; |
202 | - start_sched_trace(tr); | |
196 | + tracing_start_sched_switch_record(); | |
203 | 197 | return 0; |
204 | 198 | } |
205 | 199 |
kernel/trace/trace_selftest.c
... | ... | @@ -115,7 +115,7 @@ |
115 | 115 | ftrace_set_filter(func_name, strlen(func_name), 1); |
116 | 116 | |
117 | 117 | /* enable tracing */ |
118 | - ret = trace->init(tr); | |
118 | + ret = tracer_init(trace, tr); | |
119 | 119 | if (ret) { |
120 | 120 | warn_failed_init_tracer(trace, ret); |
121 | 121 | goto out; |
... | ... | @@ -189,7 +189,7 @@ |
189 | 189 | ftrace_enabled = 1; |
190 | 190 | tracer_enabled = 1; |
191 | 191 | |
192 | - ret = trace->init(tr); | |
192 | + ret = tracer_init(trace, tr); | |
193 | 193 | if (ret) { |
194 | 194 | warn_failed_init_tracer(trace, ret); |
195 | 195 | goto out; |
... | ... | @@ -236,7 +236,7 @@ |
236 | 236 | int ret; |
237 | 237 | |
238 | 238 | /* start the tracing */ |
239 | - ret = trace->init(tr); | |
239 | + ret = tracer_init(trace, tr); | |
240 | 240 | if (ret) { |
241 | 241 | warn_failed_init_tracer(trace, ret); |
242 | 242 | return ret; |
... | ... | @@ -290,7 +290,7 @@ |
290 | 290 | } |
291 | 291 | |
292 | 292 | /* start the tracing */ |
293 | - ret = trace->init(tr); | |
293 | + ret = tracer_init(trace, tr); | |
294 | 294 | if (ret) { |
295 | 295 | warn_failed_init_tracer(trace, ret); |
296 | 296 | return ret; |
... | ... | @@ -344,7 +344,7 @@ |
344 | 344 | } |
345 | 345 | |
346 | 346 | /* start the tracing */ |
347 | - ret = trace->init(tr); | |
347 | + ret = tracer_init(trace, tr); | |
348 | 348 | if (ret) { |
349 | 349 | warn_failed_init_tracer(trace, ret); |
350 | 350 | goto out; |
... | ... | @@ -476,7 +476,7 @@ |
476 | 476 | wait_for_completion(&isrt); |
477 | 477 | |
478 | 478 | /* start the tracing */ |
479 | - ret = trace->init(tr); | |
479 | + ret = tracer_init(trace, tr); | |
480 | 480 | if (ret) { |
481 | 481 | warn_failed_init_tracer(trace, ret); |
482 | 482 | return ret; |
... | ... | @@ -537,7 +537,7 @@ |
537 | 537 | int ret; |
538 | 538 | |
539 | 539 | /* start the tracing */ |
540 | - ret = trace->init(tr); | |
540 | + ret = tracer_init(trace, tr); | |
541 | 541 | if (ret) { |
542 | 542 | warn_failed_init_tracer(trace, ret); |
543 | 543 | return ret; |
... | ... | @@ -569,7 +569,7 @@ |
569 | 569 | int ret; |
570 | 570 | |
571 | 571 | /* start the tracing */ |
572 | - ret = trace->init(tr); | |
572 | + ret = tracer_init(trace, tr); | |
573 | 573 | if (ret) { |
574 | 574 | warn_failed_init_tracer(trace, ret); |
575 | 575 | return 0; |
... | ... | @@ -596,7 +596,7 @@ |
596 | 596 | int ret; |
597 | 597 | |
598 | 598 | /* start the tracing */ |
599 | - ret = trace->init(tr); | |
599 | + ret = tracer_init(trace, tr); | |
600 | 600 | if (ret) { |
601 | 601 | warn_failed_init_tracer(trace, ret); |
602 | 602 | return ret; |
kernel/trace/trace_sysprof.c
... | ... | @@ -226,15 +226,6 @@ |
226 | 226 | stop_stack_timer(cpu); |
227 | 227 | } |
228 | 228 | |
229 | -static void start_stack_trace(struct trace_array *tr) | |
230 | -{ | |
231 | - mutex_lock(&sample_timer_lock); | |
232 | - tracing_reset_online_cpus(tr); | |
233 | - start_stack_timers(); | |
234 | - tracer_enabled = 1; | |
235 | - mutex_unlock(&sample_timer_lock); | |
236 | -} | |
237 | - | |
238 | 229 | static void stop_stack_trace(struct trace_array *tr) |
239 | 230 | { |
240 | 231 | mutex_lock(&sample_timer_lock); |
... | ... | @@ -247,7 +238,10 @@ |
247 | 238 | { |
248 | 239 | sysprof_trace = tr; |
249 | 240 | |
250 | - start_stack_trace(tr); | |
241 | + mutex_lock(&sample_timer_lock); | |
242 | + start_stack_timers(); | |
243 | + tracer_enabled = 1; | |
244 | + mutex_unlock(&sample_timer_lock); | |
251 | 245 | return 0; |
252 | 246 | } |
253 | 247 |