brintos

brintos / linux-shallow public Read only

0
0
Text · 2.9 KiB · 0b0e570 Raw
101 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef _LINUX_PANIC_H3#define _LINUX_PANIC_H4 5#include <linux/compiler_attributes.h>6#include <linux/types.h>7 8struct pt_regs;9 10extern long (*panic_blink)(int state);11__printf(1, 2)12void panic(const char *fmt, ...) HWJS_SUSPENDS __noreturn __cold;13void nmi_panic(struct pt_regs *regs, const char *msg) HWJS_SUSPENDS;14void check_panic_on_warn(const char *origin) HWJS_SUSPENDS;15extern void oops_enter(void);16extern void oops_exit(void);17extern bool oops_may_print(void);18 19extern bool panic_triggering_all_cpu_backtrace;20extern int panic_timeout;21extern unsigned long panic_print;22extern int panic_on_oops;23extern int panic_on_unrecovered_nmi;24extern int panic_on_io_nmi;25extern int panic_on_warn;26 27extern unsigned long panic_on_taint;28extern bool panic_on_taint_nousertaint;29 30extern int sysctl_panic_on_rcu_stall;31extern int sysctl_max_rcu_stall_to_panic;32extern int sysctl_panic_on_stackoverflow;33 34extern bool crash_kexec_post_notifiers;35 36extern void __stack_chk_fail(void);37void abort(void);38 39/*40 * panic_cpu is used for synchronizing panic() and crash_kexec() execution. It41 * holds a CPU number which is executing panic() currently. A value of42 * PANIC_CPU_INVALID means no CPU has entered panic() or crash_kexec().43 */44extern atomic_t panic_cpu;45#define PANIC_CPU_INVALID	-146 47/*48 * Only to be used by arch init code. If the user over-wrote the default49 * CONFIG_PANIC_TIMEOUT, honor it.50 */51static inline void set_arch_panic_timeout(int timeout, int arch_default_timeout)52{53	if (panic_timeout == arch_default_timeout)54		panic_timeout = timeout;55}56 57/* This cannot be an enum because some may be used in assembly source. */58#define TAINT_PROPRIETARY_MODULE	059#define TAINT_FORCED_MODULE		160#define TAINT_CPU_OUT_OF_SPEC		261#define TAINT_FORCED_RMMOD		362#define TAINT_MACHINE_CHECK		463#define TAINT_BAD_PAGE			564#define TAINT_USER			665#define TAINT_DIE			766#define TAINT_OVERRIDDEN_ACPI_TABLE	867#define TAINT_WARN			968#define TAINT_CRAP			1069#define TAINT_FIRMWARE_WORKAROUND	1170#define TAINT_OOT_MODULE		1271#define TAINT_UNSIGNED_MODULE		1372#define TAINT_SOFTLOCKUP		1473#define TAINT_LIVEPATCH			1574#define TAINT_AUX			1675#define TAINT_RANDSTRUCT		1776#define TAINT_TEST			1877#define TAINT_FLAGS_COUNT		1978#define TAINT_FLAGS_MAX			((1UL << TAINT_FLAGS_COUNT) - 1)79 80struct taint_flag {81	char c_true;		/* character printed when tainted */82	char c_false;		/* character printed when not tainted */83	bool module;		/* also show as a per-module taint flag */84	const char *desc;	/* verbose description of the set taint flag */85};86 87extern const struct taint_flag taint_flags[TAINT_FLAGS_COUNT];88 89enum lockdep_ok {90	LOCKDEP_STILL_OK,91	LOCKDEP_NOW_UNRELIABLE,92};93 94extern const char *print_tainted(void);95extern const char *print_tainted_verbose(void);96extern void add_taint(unsigned flag, enum lockdep_ok) HWJS_SUSPENDS;97extern int test_taint(unsigned flag);98extern unsigned long get_taint(void);99 100#endif	/* _LINUX_PANIC_H */101