You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.5 KiB
44 lines
1.5 KiB
/* SPDX-License-Identifier: GPL-2.0 */ |
|
#ifndef __LINUX_STACKTRACE_H |
|
#define __LINUX_STACKTRACE_H |
|
|
|
#include <linux/types.h> |
|
|
|
struct task_struct; |
|
struct pt_regs; |
|
|
|
#ifdef CONFIG_STACKTRACE |
|
struct stack_trace { |
|
unsigned int nr_entries, max_entries; |
|
unsigned long *entries; |
|
int skip; /* input argument: How many entries to skip */ |
|
}; |
|
|
|
extern void save_stack_trace(struct stack_trace *trace); |
|
extern void save_stack_trace_regs(struct pt_regs *regs, |
|
struct stack_trace *trace); |
|
extern void save_stack_trace_tsk(struct task_struct *tsk, |
|
struct stack_trace *trace); |
|
extern int save_stack_trace_tsk_reliable(struct task_struct *tsk, |
|
struct stack_trace *trace); |
|
|
|
extern void print_stack_trace(struct stack_trace *trace, int spaces); |
|
extern int snprint_stack_trace(char *buf, size_t size, |
|
struct stack_trace *trace, int spaces); |
|
|
|
#ifdef CONFIG_USER_STACKTRACE_SUPPORT |
|
extern void save_stack_trace_user(struct stack_trace *trace); |
|
#else |
|
# define save_stack_trace_user(trace) do { } while (0) |
|
#endif |
|
|
|
#else /* !CONFIG_STACKTRACE */ |
|
# define save_stack_trace(trace) do { } while (0) |
|
# define save_stack_trace_tsk(tsk, trace) do { } while (0) |
|
# define save_stack_trace_user(trace) do { } while (0) |
|
# define print_stack_trace(trace, spaces) do { } while (0) |
|
# define snprint_stack_trace(buf, size, trace, spaces) do { } while (0) |
|
# define save_stack_trace_tsk_reliable(tsk, trace) ({ -ENOSYS; }) |
|
#endif /* CONFIG_STACKTRACE */ |
|
|
|
#endif /* __LINUX_STACKTRACE_H */
|
|
|