xref: /linux-6.15/include/linux/stacktrace.h (revision f38bacb3)
1 #ifndef __LINUX_STACKTRACE_H
2 #define __LINUX_STACKTRACE_H
3 
4 struct task_struct;
5 struct pt_regs;
6 
7 #ifdef CONFIG_STACKTRACE
8 struct stack_trace {
9 	unsigned int nr_entries, max_entries;
10 	unsigned long *entries;
11 	int skip;	/* input argument: How many entries to skip */
12 };
13 
14 extern void save_stack_trace(struct stack_trace *trace);
15 extern void save_stack_trace_regs(struct pt_regs *regs,
16 				  struct stack_trace *trace);
17 extern void save_stack_trace_tsk(struct task_struct *tsk,
18 				struct stack_trace *trace);
19 
20 extern void print_stack_trace(struct stack_trace *trace, int spaces);
21 
22 #ifdef CONFIG_USER_STACKTRACE_SUPPORT
23 extern void save_stack_trace_user(struct stack_trace *trace);
24 #else
25 # define save_stack_trace_user(trace)              do { } while (0)
26 #endif
27 
28 #else
29 # define save_stack_trace(trace)			do { } while (0)
30 # define save_stack_trace_tsk(tsk, trace)		do { } while (0)
31 # define save_stack_trace_user(trace)			do { } while (0)
32 # define print_stack_trace(trace, spaces)		do { } while (0)
33 #endif
34 
35 #endif
36