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