xref: /linux-6.15/include/linux/stacktrace.h (revision 9a92a6ce)
18637c099SIngo Molnar #ifndef __LINUX_STACKTRACE_H
28637c099SIngo Molnar #define __LINUX_STACKTRACE_H
38637c099SIngo Molnar 
4*9a92a6ceSJoonsoo Kim #include <linux/types.h>
5*9a92a6ceSJoonsoo Kim 
6897312bdSAndrew Morton struct task_struct;
79c0729dcSSoeren Sandmann Pedersen struct pt_regs;
8897312bdSAndrew Morton 
98637c099SIngo Molnar #ifdef CONFIG_STACKTRACE
10b618ad31SVegard Nossum struct task_struct;
11b618ad31SVegard Nossum 
128637c099SIngo Molnar struct stack_trace {
138637c099SIngo Molnar 	unsigned int nr_entries, max_entries;
148637c099SIngo Molnar 	unsigned long *entries;
155a1b3999SAndi Kleen 	int skip;	/* input argument: How many entries to skip */
168637c099SIngo Molnar };
178637c099SIngo Molnar 
18ab1b6f03SChristoph Hellwig extern void save_stack_trace(struct stack_trace *trace);
1939581062SMasami Hiramatsu extern void save_stack_trace_regs(struct pt_regs *regs,
2039581062SMasami Hiramatsu 				  struct stack_trace *trace);
219745512cSArjan van de Ven extern void save_stack_trace_tsk(struct task_struct *tsk,
229745512cSArjan van de Ven 				struct stack_trace *trace);
238637c099SIngo Molnar 
248637c099SIngo Molnar extern void print_stack_trace(struct stack_trace *trace, int spaces);
25*9a92a6ceSJoonsoo Kim extern int snprint_stack_trace(char *buf, size_t size,
26*9a92a6ceSJoonsoo Kim 			struct stack_trace *trace, int spaces);
2702b67518STörök Edwin 
288d26487fSTörök Edwin #ifdef CONFIG_USER_STACKTRACE_SUPPORT
2902b67518STörök Edwin extern void save_stack_trace_user(struct stack_trace *trace);
3002b67518STörök Edwin #else
3102b67518STörök Edwin # define save_stack_trace_user(trace)              do { } while (0)
3202b67518STörök Edwin #endif
3302b67518STörök Edwin 
348637c099SIngo Molnar #else
35ab1b6f03SChristoph Hellwig # define save_stack_trace(trace)			do { } while (0)
369745512cSArjan van de Ven # define save_stack_trace_tsk(tsk, trace)		do { } while (0)
3702b67518STörök Edwin # define save_stack_trace_user(trace)			do { } while (0)
383b5ad079SJohannes Berg # define print_stack_trace(trace, spaces)		do { } while (0)
39*9a92a6ceSJoonsoo Kim # define snprint_stack_trace(buf, size, trace, spaces)	do { } while (0)
408637c099SIngo Molnar #endif
418637c099SIngo Molnar 
428637c099SIngo Molnar #endif
43