mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
2a85a37f16
commit
762e120788
|
@ -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 @@
|
||||||
#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,
|
||||||
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)
|
||||||
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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue