Commit b6f11df26fdc28324cf9c9e3b77f2dc985c1bb13

Authored by Arnaldo Carvalho de Melo
Committed by Ingo Molnar
1 parent 51a763dd84

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

... ... @@ -1086,8 +1086,6 @@
1086 1086  
1087 1087 static void blk_tracer_start(struct trace_array *tr)
1088 1088 {
1089   - tracing_reset_online_cpus(tr);
1090   -
1091 1089 mutex_lock(&blk_probe_mutex);
1092 1090 if (atomic_add_return(1, &blk_probes_ref) == 1)
1093 1091 if (blk_register_tracepoints())
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
... ... @@ -395,6 +395,7 @@
395 395 cpumask_var_t started;
396 396 };
397 397  
  398 +int tracer_init(struct tracer *t, struct trace_array *tr);
398 399 int tracing_is_enabled(void);
399 400 void trace_wake_up(void);
400 401 void tracing_reset(struct trace_array *tr, int cpu);
kernel/trace/trace_branch.c
... ... @@ -131,7 +131,6 @@
131 131  
132 132 static int branch_trace_init(struct trace_array *tr)
133 133 {
134   - tracing_reset_online_cpus(tr);
135 134 start_branch_trace(tr);
136 135 return 0;
137 136 }
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
... ... @@ -56,7 +56,6 @@
56 56 &trace_graph_entry);
57 57 if (ret)
58 58 return ret;
59   - tracing_reset_online_cpus(tr);
60 59 tracing_start_cmdline_record();
61 60  
62 61 return 0;
kernel/trace/trace_hw_branches.c
... ... @@ -132,7 +132,6 @@
132 132 hw_branch_trace = tr;
133 133  
134 134 register_hotcpu_notifier(&bts_hotcpu_notifier);
135   - tracing_reset_online_cpus(tr);
136 135 bts_trace_start(tr);
137 136  
138 137 return 0;
kernel/trace/trace_nop.c
... ... @@ -48,7 +48,6 @@
48 48 static int nop_trace_init(struct trace_array *tr)
49 49 {
50 50 ctx_trace = tr;
51   - tracing_reset_online_cpus(tr);
52 51 start_nop_trace(tr);
53 52 return 0;
54 53 }
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