kdebug.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. /* Note - you should never unregister because that can race with NMIs.
  13. If you really want to do it first unregister - then synchronize_sched - then free.
  14. */
  15. int register_die_notifier(struct notifier_block *nb);
  16. extern struct notifier_block *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,char *str,struct pt_regs *regs,long err,int trap, int sig)
  34. {
  35. struct die_args args = { .regs=regs, .str=str, .err=err, .trapnr=trap,.signr=sig };
  36. return notifier_call_chain(&die_chain, val, &args);
  37. }
  38. extern int printk_address(unsigned long address);
  39. extern void die(const char *,struct pt_regs *,long);
  40. extern void __die(const char *,struct pt_regs *,long);
  41. extern void show_registers(struct pt_regs *regs);
  42. extern void dump_pagetable(unsigned long);
  43. extern void oops_begin(void);
  44. extern void oops_end(void);
  45. #endif