1c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __LINUX_STACKTRACE_H
2c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __LINUX_STACKTRACE_H
3c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
4c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef CONFIG_STACKTRACE
5c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct stack_trace {
6c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	unsigned int nr_entries, max_entries;
7c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	unsigned long *entries;
8c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
9c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
10c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern void save_stack_trace(struct stack_trace *trace,
11c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru			     struct task_struct *task, int all_contexts,
12c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru			     unsigned int skip);
13c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
14c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern void print_stack_trace(struct stack_trace *trace, int spaces);
15c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#else
16c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru# define save_stack_trace(trace, task, all, skip)	do { } while (0)
17c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru# define print_stack_trace(trace)			do { } while (0)
18c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
19c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
20c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
21