tracing: Move ftrace_trace_stack() out of trace.c and into trace.h
The file trace.c has become a catchall for most things tracing. Start making it smaller by breaking out various aspects into their own files. Make ftrace_trace_stack() into a static inline that tests if stack tracing is enabled and if so to call __ftrace_trace_stack() to do the stack trace. This keeps the test inlined in the fast paths and only does the function call if stack tracing is enabled. Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Andrew Morton <akpm@linux-foundation.org> Link: https://patch.msgid.link/20260208032449.974218132@kernel.org Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>master
parent
0e730bc067
commit
3e6c8f80e5
|
|
@ -1032,32 +1032,6 @@ static inline void trace_access_lock_init(void)
|
|||
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_STACKTRACE
|
||||
static void __ftrace_trace_stack(struct trace_array *tr,
|
||||
struct trace_buffer *buffer,
|
||||
unsigned int trace_ctx,
|
||||
int skip, struct pt_regs *regs);
|
||||
static inline void ftrace_trace_stack(struct trace_array *tr,
|
||||
struct trace_buffer *buffer,
|
||||
unsigned int trace_ctx,
|
||||
int skip, struct pt_regs *regs);
|
||||
|
||||
#else
|
||||
static inline void __ftrace_trace_stack(struct trace_array *tr,
|
||||
struct trace_buffer *buffer,
|
||||
unsigned int trace_ctx,
|
||||
int skip, struct pt_regs *regs)
|
||||
{
|
||||
}
|
||||
static inline void ftrace_trace_stack(struct trace_array *tr,
|
||||
struct trace_buffer *buffer,
|
||||
unsigned long trace_ctx,
|
||||
int skip, struct pt_regs *regs)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void tracer_tracing_on(struct trace_array *tr)
|
||||
{
|
||||
if (tr->array_buffer.buffer)
|
||||
|
|
@ -2964,10 +2938,10 @@ struct ftrace_stacks {
|
|||
static DEFINE_PER_CPU(struct ftrace_stacks, ftrace_stacks);
|
||||
static DEFINE_PER_CPU(int, ftrace_stack_reserve);
|
||||
|
||||
static void __ftrace_trace_stack(struct trace_array *tr,
|
||||
struct trace_buffer *buffer,
|
||||
unsigned int trace_ctx,
|
||||
int skip, struct pt_regs *regs)
|
||||
void __ftrace_trace_stack(struct trace_array *tr,
|
||||
struct trace_buffer *buffer,
|
||||
unsigned int trace_ctx,
|
||||
int skip, struct pt_regs *regs)
|
||||
{
|
||||
struct ring_buffer_event *event;
|
||||
unsigned int size, nr_entries;
|
||||
|
|
@ -3050,17 +3024,6 @@ static void __ftrace_trace_stack(struct trace_array *tr,
|
|||
trace_clear_recursion(bit);
|
||||
}
|
||||
|
||||
static inline void ftrace_trace_stack(struct trace_array *tr,
|
||||
struct trace_buffer *buffer,
|
||||
unsigned int trace_ctx,
|
||||
int skip, struct pt_regs *regs)
|
||||
{
|
||||
if (!(tr->trace_flags & TRACE_ITER(STACKTRACE)))
|
||||
return;
|
||||
|
||||
__ftrace_trace_stack(tr, buffer, trace_ctx, skip, regs);
|
||||
}
|
||||
|
||||
void __trace_stack(struct trace_array *tr, unsigned int trace_ctx,
|
||||
int skip)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2279,6 +2279,37 @@ static inline void sanitize_event_name(char *name)
|
|||
*name = '_';
|
||||
}
|
||||
|
||||
#ifdef CONFIG_STACKTRACE
|
||||
void __ftrace_trace_stack(struct trace_array *tr,
|
||||
struct trace_buffer *buffer,
|
||||
unsigned int trace_ctx,
|
||||
int skip, struct pt_regs *regs);
|
||||
|
||||
static __always_inline void ftrace_trace_stack(struct trace_array *tr,
|
||||
struct trace_buffer *buffer,
|
||||
unsigned int trace_ctx,
|
||||
int skip, struct pt_regs *regs)
|
||||
{
|
||||
if (!(tr->trace_flags & TRACE_ITER(STACKTRACE)))
|
||||
return;
|
||||
|
||||
__ftrace_trace_stack(tr, buffer, trace_ctx, skip, regs);
|
||||
}
|
||||
#else
|
||||
static inline void __ftrace_trace_stack(struct trace_array *tr,
|
||||
struct trace_buffer *buffer,
|
||||
unsigned int trace_ctx,
|
||||
int skip, struct pt_regs *regs)
|
||||
{
|
||||
}
|
||||
static inline void ftrace_trace_stack(struct trace_array *tr,
|
||||
struct trace_buffer *buffer,
|
||||
unsigned long trace_ctx,
|
||||
int skip, struct pt_regs *regs)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This is a generic way to read and write a u64 value from a file in tracefs.
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in New Issue