Commit 762e1207 authored by Steven Rostedt's avatar Steven Rostedt Committed by Steven Rostedt

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: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 2a85a37f
...@@ -2435,6 +2435,14 @@ bytes respectively. Such letter suffixes can also be entirely omitted. ...@@ -2435,6 +2435,14 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
stacktrace [FTRACE] stacktrace [FTRACE]
Enabled the stack tracer on boot up. Enabled the stack tracer on boot up.
stacktrace_filter=[function-list]
[FTRACE] Limit the functions that the stack tracer
will trace at boot up. function-list is a comma separated
list of functions. This list can be changed at run
time by the stack_trace_filter file in the debugfs
tracing directory. Note, this enables stack tracing
and the stacktrace above is not needed.
sti= [PARISC,HW] sti= [PARISC,HW]
Format: <num> Format: <num>
Set the STI (builtin display/keyboard on the HP-PARISC Set the STI (builtin display/keyboard on the HP-PARISC
......
...@@ -13,6 +13,9 @@ ...@@ -13,6 +13,9 @@
#include <linux/sysctl.h> #include <linux/sysctl.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <asm/setup.h>
#include "trace.h" #include "trace.h"
#define STACK_TRACE_ENTRIES 500 #define STACK_TRACE_ENTRIES 500
...@@ -352,8 +355,13 @@ stack_trace_sysctl(struct ctl_table *table, int write, ...@@ -352,8 +355,13 @@ stack_trace_sysctl(struct ctl_table *table, int write,
return ret; return ret;
} }
static char stack_trace_filter_buf[COMMAND_LINE_SIZE+1] __initdata;
static __init int enable_stacktrace(char *str) static __init int enable_stacktrace(char *str)
{ {
if (strncmp(str, "_filter=", 8) == 0)
strncpy(stack_trace_filter_buf, str+8, COMMAND_LINE_SIZE);
stack_tracer_enabled = 1; stack_tracer_enabled = 1;
last_stack_tracer_enabled = 1; last_stack_tracer_enabled = 1;
return 1; return 1;
...@@ -375,6 +383,9 @@ static __init int stack_trace_init(void) ...@@ -375,6 +383,9 @@ static __init int stack_trace_init(void)
trace_create_file("stack_trace_filter", 0444, d_tracer, trace_create_file("stack_trace_filter", 0444, d_tracer,
NULL, &stack_trace_filter_fops); NULL, &stack_trace_filter_fops);
if (stack_trace_filter_buf[0])
ftrace_set_early_filter(&trace_ops, stack_trace_filter_buf, 1);
if (stack_tracer_enabled) if (stack_tracer_enabled)
register_ftrace_function(&trace_ops); register_ftrace_function(&trace_ops);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment