kdebug.h 1.3 KB

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