diff options
author | Steven Rostedt <srostedt@redhat.com> | 2011-12-19 22:01:00 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2011-12-21 07:26:49 -0500 |
commit | 762e1207889b3451c50d365b741af6f9ce958886 (patch) | |
tree | dcb1f4eacbddfa342181a29a97eb9b994922b009 /kernel/trace/trace_stack.c | |
parent | 2a85a37f168d2b4d74d493b578af4dc9032be92e (diff) |
tracing: Have stack tracing set filtered functions at boot
Add stacktrace_filter= to the kernel command line that lets
the user pick specific functions to check the stack on.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace/trace_stack.c')
-rw-r--r-- | kernel/trace/trace_stack.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c index 0398b7c7afd6..d4545f49242e 100644 --- a/kernel/trace/trace_stack.c +++ b/kernel/trace/trace_stack.c | |||
@@ -13,6 +13,9 @@ | |||
13 | #include <linux/sysctl.h> | 13 | #include <linux/sysctl.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/fs.h> | 15 | #include <linux/fs.h> |
16 | |||
17 | #include <asm/setup.h> | ||
18 | |||
16 | #include "trace.h" | 19 | #include "trace.h" |
17 | 20 | ||
18 | #define STACK_TRACE_ENTRIES 500 | 21 | #define STACK_TRACE_ENTRIES 500 |
@@ -352,8 +355,13 @@ stack_trace_sysctl(struct ctl_table *table, int write, | |||
352 | return ret; | 355 | return ret; |
353 | } | 356 | } |
354 | 357 | ||
358 | static char stack_trace_filter_buf[COMMAND_LINE_SIZE+1] __initdata; | ||
359 | |||
355 | static __init int enable_stacktrace(char *str) | 360 | static __init int enable_stacktrace(char *str) |
356 | { | 361 | { |
362 | if (strncmp(str, "_filter=", 8) == 0) | ||
363 | strncpy(stack_trace_filter_buf, str+8, COMMAND_LINE_SIZE); | ||
364 | |||
357 | stack_tracer_enabled = 1; | 365 | stack_tracer_enabled = 1; |
358 | last_stack_tracer_enabled = 1; | 366 | last_stack_tracer_enabled = 1; |
359 | return 1; | 367 | return 1; |
@@ -375,6 +383,9 @@ static __init int stack_trace_init(void) | |||
375 | trace_create_file("stack_trace_filter", 0444, d_tracer, | 383 | trace_create_file("stack_trace_filter", 0444, d_tracer, |
376 | NULL, &stack_trace_filter_fops); | 384 | NULL, &stack_trace_filter_fops); |
377 | 385 | ||
386 | if (stack_trace_filter_buf[0]) | ||
387 | ftrace_set_early_filter(&trace_ops, stack_trace_filter_buf, 1); | ||
388 | |||
378 | if (stack_tracer_enabled) | 389 | if (stack_tracer_enabled) |
379 | register_ftrace_function(&trace_ops); | 390 | register_ftrace_function(&trace_ops); |
380 | 391 | ||