at v2.6.17 58 lines 1.2 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 struct atomic_notifier_head die_chain; 19 20/* Grossly misnamed. */ 21enum die_val { 22 DIE_OOPS = 1, 23 DIE_INT3, 24 DIE_DEBUG, 25 DIE_PANIC, 26 DIE_NMI, 27 DIE_DIE, 28 DIE_NMIWATCHDOG, 29 DIE_KERNELDEBUG, 30 DIE_TRAP, 31 DIE_GPF, 32 DIE_CALL, 33 DIE_NMI_IPI, 34 DIE_PAGE_FAULT, 35}; 36 37static inline int notify_die(enum die_val val, const char *str, 38 struct pt_regs *regs, long err, int trap, int sig) 39{ 40 struct die_args args = { 41 .regs = regs, 42 .str = str, 43 .err = err, 44 .trapnr = trap, 45 .signr = sig 46 }; 47 return atomic_notifier_call_chain(&die_chain, val, &args); 48} 49 50extern int printk_address(unsigned long address); 51extern void die(const char *,struct pt_regs *,long); 52extern void __die(const char *,struct pt_regs *,long); 53extern void show_registers(struct pt_regs *regs); 54extern void dump_pagetable(unsigned long); 55extern unsigned long oops_begin(void); 56extern void oops_end(unsigned long); 57 58#endif