1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _LINUX_UNWINDER_H
3#define _LINUX_UNWINDER_H
4
5#include <asm/stacktrace.h>
6
7struct unwinder {
8	const char *name;
9	struct list_head list;
10	int rating;
11	void (*dump)(struct task_struct *, struct pt_regs *,
12		     unsigned long *, const struct stacktrace_ops *, void *);
13};
14
15extern int unwinder_init(void);
16extern int unwinder_register(struct unwinder *);
17
18extern void unwind_stack(struct task_struct *, struct pt_regs *,
19			 unsigned long *, const struct stacktrace_ops *,
20			 void *);
21
22extern void stack_reader_dump(struct task_struct *, struct pt_regs *,
23			      unsigned long *, const struct stacktrace_ops *,
24			      void *);
25
26/*
27 * Used by fault handling code to signal to the unwinder code that it
28 * should switch to a different unwinder.
29 */
30extern int unwinder_faulted;
31
32#endif /* _LINUX_UNWINDER_H */
33