xref: /linux-6.15/include/linux/stacktrace.h (revision b618ad31)
18637c099SIngo Molnar #ifndef __LINUX_STACKTRACE_H
28637c099SIngo Molnar #define __LINUX_STACKTRACE_H
38637c099SIngo Molnar 
4897312bdSAndrew Morton struct task_struct;
5897312bdSAndrew Morton 
68637c099SIngo Molnar #ifdef CONFIG_STACKTRACE
7*b618ad31SVegard Nossum struct task_struct;
8*b618ad31SVegard Nossum 
98637c099SIngo Molnar struct stack_trace {
108637c099SIngo Molnar 	unsigned int nr_entries, max_entries;
118637c099SIngo Molnar 	unsigned long *entries;
125a1b3999SAndi Kleen 	int skip;	/* input argument: How many entries to skip */
138637c099SIngo Molnar };
148637c099SIngo Molnar 
15ab1b6f03SChristoph Hellwig extern void save_stack_trace(struct stack_trace *trace);
16acc6be54SVegard Nossum extern void save_stack_trace_bp(struct stack_trace *trace, unsigned long bp);
179745512cSArjan van de Ven extern void save_stack_trace_tsk(struct task_struct *tsk,
189745512cSArjan van de Ven 				struct stack_trace *trace);
198637c099SIngo Molnar 
208637c099SIngo Molnar extern void print_stack_trace(struct stack_trace *trace, int spaces);
2102b67518STörök Edwin 
228d26487fSTörök Edwin #ifdef CONFIG_USER_STACKTRACE_SUPPORT
2302b67518STörök Edwin extern void save_stack_trace_user(struct stack_trace *trace);
2402b67518STörök Edwin #else
2502b67518STörök Edwin # define save_stack_trace_user(trace)              do { } while (0)
2602b67518STörök Edwin #endif
2702b67518STörök Edwin 
288637c099SIngo Molnar #else
29ab1b6f03SChristoph Hellwig # define save_stack_trace(trace)			do { } while (0)
309745512cSArjan van de Ven # define save_stack_trace_tsk(tsk, trace)		do { } while (0)
3102b67518STörök Edwin # define save_stack_trace_user(trace)			do { } while (0)
323b5ad079SJohannes Berg # define print_stack_trace(trace, spaces)		do { } while (0)
338637c099SIngo Molnar #endif
348637c099SIngo Molnar 
358637c099SIngo Molnar #endif
36