Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v2.6.20 60 lines 1.3 kB view raw
1#ifndef _X86_64_KDEBUG_H 2#define _X86_64_KDEBUG_H 1 3 4#include <linux/notifier.h> 5 6struct pt_regs; 7 8struct die_args { 9 struct pt_regs *regs; 10 const char *str; 11 long err; 12 int trapnr; 13 int signr; 14}; 15 16extern int register_die_notifier(struct notifier_block *); 17extern int unregister_die_notifier(struct notifier_block *); 18extern int register_page_fault_notifier(struct notifier_block *); 19extern int unregister_page_fault_notifier(struct notifier_block *); 20extern struct atomic_notifier_head die_chain; 21 22/* Grossly misnamed. */ 23enum die_val { 24 DIE_OOPS = 1, 25 DIE_INT3, 26 DIE_DEBUG, 27 DIE_PANIC, 28 DIE_NMI, 29 DIE_DIE, 30 DIE_NMIWATCHDOG, 31 DIE_KERNELDEBUG, 32 DIE_TRAP, 33 DIE_GPF, 34 DIE_CALL, 35 DIE_NMI_IPI, 36 DIE_PAGE_FAULT, 37}; 38 39static inline int notify_die(enum die_val val, const char *str, 40 struct pt_regs *regs, long err, int trap, int sig) 41{ 42 struct die_args args = { 43 .regs = regs, 44 .str = str, 45 .err = err, 46 .trapnr = trap, 47 .signr = sig 48 }; 49 return atomic_notifier_call_chain(&die_chain, val, &args); 50} 51 52extern void printk_address(unsigned long address); 53extern void die(const char *,struct pt_regs *,long); 54extern void __die(const char *,struct pt_regs *,long); 55extern void show_registers(struct pt_regs *regs); 56extern void dump_pagetable(unsigned long); 57extern unsigned long oops_begin(void); 58extern void oops_end(unsigned long); 59 60#endif