diff options
Diffstat (limited to 'kernel/trace/trace_sysprof.c')
| -rw-r--r-- | kernel/trace/trace_sysprof.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/kernel/trace/trace_sysprof.c b/kernel/trace/trace_sysprof.c index eaca5ad803ff..91fd19c2149f 100644 --- a/kernel/trace/trace_sysprof.c +++ b/kernel/trace/trace_sysprof.c | |||
| @@ -88,7 +88,7 @@ static void backtrace_address(void *data, unsigned long addr, int reliable) | |||
| 88 | } | 88 | } |
| 89 | } | 89 | } |
| 90 | 90 | ||
| 91 | const static struct stacktrace_ops backtrace_ops = { | 91 | static const struct stacktrace_ops backtrace_ops = { |
| 92 | .warning = backtrace_warning, | 92 | .warning = backtrace_warning, |
| 93 | .warning_symbol = backtrace_warning_symbol, | 93 | .warning_symbol = backtrace_warning_symbol, |
| 94 | .stack = backtrace_stack, | 94 | .stack = backtrace_stack, |
| @@ -226,15 +226,6 @@ static void stop_stack_timers(void) | |||
| 226 | stop_stack_timer(cpu); | 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 | static void stop_stack_trace(struct trace_array *tr) | 229 | static void stop_stack_trace(struct trace_array *tr) |
| 239 | { | 230 | { |
| 240 | mutex_lock(&sample_timer_lock); | 231 | mutex_lock(&sample_timer_lock); |
| @@ -247,12 +238,18 @@ static int stack_trace_init(struct trace_array *tr) | |||
| 247 | { | 238 | { |
| 248 | sysprof_trace = tr; | 239 | sysprof_trace = tr; |
| 249 | 240 | ||
| 250 | start_stack_trace(tr); | 241 | tracing_start_cmdline_record(); |
| 242 | |||
| 243 | mutex_lock(&sample_timer_lock); | ||
| 244 | start_stack_timers(); | ||
| 245 | tracer_enabled = 1; | ||
| 246 | mutex_unlock(&sample_timer_lock); | ||
| 251 | return 0; | 247 | return 0; |
| 252 | } | 248 | } |
| 253 | 249 | ||
| 254 | static void stack_trace_reset(struct trace_array *tr) | 250 | static void stack_trace_reset(struct trace_array *tr) |
| 255 | { | 251 | { |
| 252 | tracing_stop_cmdline_record(); | ||
| 256 | stop_stack_trace(tr); | 253 | stop_stack_trace(tr); |
| 257 | } | 254 | } |
| 258 | 255 | ||
| @@ -317,7 +314,7 @@ sysprof_sample_write(struct file *filp, const char __user *ubuf, | |||
| 317 | return cnt; | 314 | return cnt; |
| 318 | } | 315 | } |
| 319 | 316 | ||
| 320 | static struct file_operations sysprof_sample_fops = { | 317 | static const struct file_operations sysprof_sample_fops = { |
| 321 | .read = sysprof_sample_read, | 318 | .read = sysprof_sample_read, |
| 322 | .write = sysprof_sample_write, | 319 | .write = sysprof_sample_write, |
| 323 | }; | 320 | }; |
| @@ -330,5 +327,5 @@ void init_tracer_sysprof_debugfs(struct dentry *d_tracer) | |||
| 330 | d_tracer, NULL, &sysprof_sample_fops); | 327 | d_tracer, NULL, &sysprof_sample_fops); |
| 331 | if (entry) | 328 | if (entry) |
| 332 | return; | 329 | return; |
| 333 | pr_warning("Could not create debugfs 'dyn_ftrace_total_info' entry\n"); | 330 | pr_warning("Could not create debugfs 'sysprof_sample_period' entry\n"); |
| 334 | } | 331 | } |
