18637c099SIngo Molnar #ifndef __LINUX_STACKTRACE_H 28637c099SIngo Molnar #define __LINUX_STACKTRACE_H 38637c099SIngo Molnar 4897312bdSAndrew Morton struct task_struct; 59c0729dcSSoeren Sandmann Pedersen struct pt_regs; 6897312bdSAndrew Morton 78637c099SIngo Molnar #ifdef CONFIG_STACKTRACE 8b618ad31SVegard Nossum struct task_struct; 9b618ad31SVegard Nossum 108637c099SIngo Molnar struct stack_trace { 118637c099SIngo Molnar unsigned int nr_entries, max_entries; 128637c099SIngo Molnar unsigned long *entries; 135a1b3999SAndi Kleen int skip; /* input argument: How many entries to skip */ 148637c099SIngo Molnar }; 158637c099SIngo Molnar 16ab1b6f03SChristoph Hellwig extern void save_stack_trace(struct stack_trace *trace); 17*39581062SMasami Hiramatsu extern void save_stack_trace_regs(struct pt_regs *regs, 18*39581062SMasami Hiramatsu struct stack_trace *trace); 199745512cSArjan van de Ven extern void save_stack_trace_tsk(struct task_struct *tsk, 209745512cSArjan van de Ven struct stack_trace *trace); 218637c099SIngo Molnar 228637c099SIngo Molnar extern void print_stack_trace(struct stack_trace *trace, int spaces); 2302b67518STörök Edwin 248d26487fSTörök Edwin #ifdef CONFIG_USER_STACKTRACE_SUPPORT 2502b67518STörök Edwin extern void save_stack_trace_user(struct stack_trace *trace); 2602b67518STörök Edwin #else 2702b67518STörök Edwin # define save_stack_trace_user(trace) do { } while (0) 2802b67518STörök Edwin #endif 2902b67518STörök Edwin 308637c099SIngo Molnar #else 31ab1b6f03SChristoph Hellwig # define save_stack_trace(trace) do { } while (0) 329745512cSArjan van de Ven # define save_stack_trace_tsk(tsk, trace) do { } while (0) 3302b67518STörök Edwin # define save_stack_trace_user(trace) do { } while (0) 343b5ad079SJohannes Berg # define print_stack_trace(trace, spaces) do { } while (0) 358637c099SIngo Molnar #endif 368637c099SIngo Molnar 378637c099SIngo Molnar #endif 38