kmsg_dump.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. * linux/include/kmsg_dump.h
  3. *
  4. * Copyright (C) 2009 Net Insight AB
  5. *
  6. * Author: Simon Kagstrom <simon.kagstrom@netinsight.net>
  7. *
  8. * This file is subject to the terms and conditions of the GNU General Public
  9. * License. See the file COPYING in the main directory of this archive
  10. * for more details.
  11. */
  12. #ifndef _LINUX_KMSG_DUMP_H
  13. #define _LINUX_KMSG_DUMP_H
  14. #include <linux/list.h>
  15. enum kmsg_dump_reason {
  16. KMSG_DUMP_OOPS,
  17. KMSG_DUMP_PANIC,
  18. KMSG_DUMP_KEXEC,
  19. KMSG_DUMP_RESTART,
  20. KMSG_DUMP_HALT,
  21. KMSG_DUMP_POWEROFF,
  22. KMSG_DUMP_EMERG,
  23. };
  24. /**
  25. * struct kmsg_dumper - kernel crash message dumper structure
  26. * @dump: The callback which gets called on crashes. The buffer is passed
  27. * as two sections, where s1 (length l1) contains the older
  28. * messages and s2 (length l2) contains the newer.
  29. * @list: Entry in the dumper list (private)
  30. * @registered: Flag that specifies if this is already registered
  31. */
  32. struct kmsg_dumper {
  33. void (*dump)(struct kmsg_dumper *dumper, enum kmsg_dump_reason reason,
  34. const char *s1, unsigned long l1,
  35. const char *s2, unsigned long l2);
  36. struct list_head list;
  37. int registered;
  38. };
  39. #ifdef CONFIG_PRINTK
  40. void kmsg_dump(enum kmsg_dump_reason reason);
  41. int kmsg_dump_register(struct kmsg_dumper *dumper);
  42. int kmsg_dump_unregister(struct kmsg_dumper *dumper);
  43. #else
  44. static inline void kmsg_dump(enum kmsg_dump_reason reason)
  45. {
  46. }
  47. static inline int kmsg_dump_register(struct kmsg_dumper *dumper)
  48. {
  49. return -EINVAL;
  50. }
  51. static inline int kmsg_dump_unregister(struct kmsg_dumper *dumper)
  52. {
  53. return -EINVAL;
  54. }
  55. #endif
  56. #endif /* _LINUX_KMSG_DUMP_H */