kdebug.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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_NMI_POST,
  32. DIE_PAGE_FAULT,
  33. };
  34. static inline int notify_die(enum die_val val, const char *str,
  35. struct pt_regs *regs, long err, int trap, int sig)
  36. {
  37. struct die_args args = {
  38. .regs = regs,
  39. .str = str,
  40. .err = err,
  41. .trapnr = trap,
  42. .signr = sig
  43. };
  44. return atomic_notifier_call_chain(&die_chain, val, &args);
  45. }
  46. extern void printk_address(unsigned long address);
  47. extern void die(const char *,struct pt_regs *,long);
  48. extern void __die(const char *,struct pt_regs *,long);
  49. extern void show_registers(struct pt_regs *regs);
  50. extern void dump_pagetable(unsigned long);
  51. extern unsigned long oops_begin(void);
  52. extern void oops_end(unsigned long);
  53. #endif