Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -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
+11 −0
Original line number Original line Diff line number Diff line
@@ -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);