diff options
Diffstat (limited to 'kernel/trace/trace_sysprof.c')
-rw-r--r-- | kernel/trace/trace_sysprof.c | 31 |
1 files changed, 5 insertions, 26 deletions
diff --git a/kernel/trace/trace_sysprof.c b/kernel/trace/trace_sysprof.c index 9587d3bcba55..01becf1f19ff 100644 --- a/kernel/trace/trace_sysprof.c +++ b/kernel/trace/trace_sysprof.c | |||
@@ -234,20 +234,10 @@ static void stop_stack_timers(void) | |||
234 | stop_stack_timer(cpu); | 234 | stop_stack_timer(cpu); |
235 | } | 235 | } |
236 | 236 | ||
237 | static void stack_reset(struct trace_array *tr) | ||
238 | { | ||
239 | int cpu; | ||
240 | |||
241 | tr->time_start = ftrace_now(tr->cpu); | ||
242 | |||
243 | for_each_online_cpu(cpu) | ||
244 | tracing_reset(tr, cpu); | ||
245 | } | ||
246 | |||
247 | static void start_stack_trace(struct trace_array *tr) | 237 | static void start_stack_trace(struct trace_array *tr) |
248 | { | 238 | { |
249 | mutex_lock(&sample_timer_lock); | 239 | mutex_lock(&sample_timer_lock); |
250 | stack_reset(tr); | 240 | tracing_reset_online_cpus(tr); |
251 | start_stack_timers(); | 241 | start_stack_timers(); |
252 | tracer_enabled = 1; | 242 | tracer_enabled = 1; |
253 | mutex_unlock(&sample_timer_lock); | 243 | mutex_unlock(&sample_timer_lock); |
@@ -261,27 +251,17 @@ static void stop_stack_trace(struct trace_array *tr) | |||
261 | mutex_unlock(&sample_timer_lock); | 251 | mutex_unlock(&sample_timer_lock); |
262 | } | 252 | } |
263 | 253 | ||
264 | static void stack_trace_init(struct trace_array *tr) | 254 | static int stack_trace_init(struct trace_array *tr) |
265 | { | 255 | { |
266 | sysprof_trace = tr; | 256 | sysprof_trace = tr; |
267 | 257 | ||
268 | if (tr->ctrl) | 258 | start_stack_trace(tr); |
269 | start_stack_trace(tr); | 259 | return 0; |
270 | } | 260 | } |
271 | 261 | ||
272 | static void stack_trace_reset(struct trace_array *tr) | 262 | static void stack_trace_reset(struct trace_array *tr) |
273 | { | 263 | { |
274 | if (tr->ctrl) | 264 | stop_stack_trace(tr); |
275 | stop_stack_trace(tr); | ||
276 | } | ||
277 | |||
278 | static void stack_trace_ctrl_update(struct trace_array *tr) | ||
279 | { | ||
280 | /* When starting a new trace, reset the buffers */ | ||
281 | if (tr->ctrl) | ||
282 | start_stack_trace(tr); | ||
283 | else | ||
284 | stop_stack_trace(tr); | ||
285 | } | 265 | } |
286 | 266 | ||
287 | static struct tracer stack_trace __read_mostly = | 267 | static struct tracer stack_trace __read_mostly = |
@@ -289,7 +269,6 @@ static struct tracer stack_trace __read_mostly = | |||
289 | .name = "sysprof", | 269 | .name = "sysprof", |
290 | .init = stack_trace_init, | 270 | .init = stack_trace_init, |
291 | .reset = stack_trace_reset, | 271 | .reset = stack_trace_reset, |
292 | .ctrl_update = stack_trace_ctrl_update, | ||
293 | #ifdef CONFIG_FTRACE_SELFTEST | 272 | #ifdef CONFIG_FTRACE_SELFTEST |
294 | .selftest = trace_selftest_startup_sysprof, | 273 | .selftest = trace_selftest_startup_sysprof, |
295 | #endif | 274 | #endif |