#include <linux/sched/debug.h>
#include <linux/kallsyms.h>
#include <linux/kprobes.h>
#include <linux/uaccess.h>
#include <linux/hardirq.h>
#include <linux/kdebug.h>
#include <linux/export.h>
#include <linux/ptrace.h>
#include <linux/kexec.h>
#include <linux/sysfs.h>
#include <linux/bug.h>
#include <linux/nmi.h>
#include <asm/cpu_entry_area.h>
#include <asm/stacktrace.h>
static const char * const exception_stack_names[] = …;
const char *stack_type_name(enum stack_type type)
{ … }
struct estack_pages { … };
#define EPAGERANGE(st) …
static const
struct estack_pages estack_pages[CEA_ESTACK_PAGES] ____cacheline_aligned = …;
static __always_inline bool in_exception_stack(unsigned long *stack, struct stack_info *info)
{ … }
static __always_inline bool in_irq_stack(unsigned long *stack, struct stack_info *info)
{ … }
bool noinstr get_stack_info_noinstr(unsigned long *stack, struct task_struct *task,
struct stack_info *info)
{ … }
int get_stack_info(unsigned long *stack, struct task_struct *task,
struct stack_info *info, unsigned long *visit_mask)
{ … }