xref: /linux/include/linux/kmsg_dump.h (revision 595dd3d8)
1456b565cSSimon Kagstrom /*
2456b565cSSimon Kagstrom  * linux/include/kmsg_dump.h
3456b565cSSimon Kagstrom  *
4456b565cSSimon Kagstrom  * Copyright (C) 2009 Net Insight AB
5456b565cSSimon Kagstrom  *
6456b565cSSimon Kagstrom  * Author: Simon Kagstrom <simon.kagstrom@netinsight.net>
7456b565cSSimon Kagstrom  *
8456b565cSSimon Kagstrom  * This file is subject to the terms and conditions of the GNU General Public
9456b565cSSimon Kagstrom  * License.  See the file COPYING in the main directory of this archive
10456b565cSSimon Kagstrom  * for more details.
11456b565cSSimon Kagstrom  */
12456b565cSSimon Kagstrom #ifndef _LINUX_KMSG_DUMP_H
13456b565cSSimon Kagstrom #define _LINUX_KMSG_DUMP_H
14456b565cSSimon Kagstrom 
15456b565cSSimon Kagstrom #include <linux/list.h>
16456b565cSSimon Kagstrom 
17456b565cSSimon Kagstrom enum kmsg_dump_reason {
18456b565cSSimon Kagstrom 	KMSG_DUMP_OOPS,
19456b565cSSimon Kagstrom 	KMSG_DUMP_PANIC,
20456b565cSSimon Kagstrom };
21456b565cSSimon Kagstrom 
22456b565cSSimon Kagstrom /**
23456b565cSSimon Kagstrom  * struct kmsg_dumper - kernel crash message dumper structure
24456b565cSSimon Kagstrom  * @dump:	The callback which gets called on crashes. The buffer is passed
25456b565cSSimon Kagstrom  * 		as two sections, where s1 (length l1) contains the older
26456b565cSSimon Kagstrom  * 		messages and s2 (length l2) contains the newer.
27456b565cSSimon Kagstrom  * @list:	Entry in the dumper list (private)
28456b565cSSimon Kagstrom  * @registered:	Flag that specifies if this is already registered
29456b565cSSimon Kagstrom  */
30456b565cSSimon Kagstrom struct kmsg_dumper {
31456b565cSSimon Kagstrom 	void (*dump)(struct kmsg_dumper *dumper, enum kmsg_dump_reason reason,
32456b565cSSimon Kagstrom 			const char *s1, unsigned long l1,
33456b565cSSimon Kagstrom 			const char *s2, unsigned long l2);
34456b565cSSimon Kagstrom 	struct list_head list;
35456b565cSSimon Kagstrom 	int registered;
36456b565cSSimon Kagstrom };
37456b565cSSimon Kagstrom 
38*595dd3d8SRandy Dunlap #ifdef CONFIG_PRINTK
39456b565cSSimon Kagstrom void kmsg_dump(enum kmsg_dump_reason reason);
40456b565cSSimon Kagstrom 
41456b565cSSimon Kagstrom int kmsg_dump_register(struct kmsg_dumper *dumper);
42456b565cSSimon Kagstrom 
43456b565cSSimon Kagstrom int kmsg_dump_unregister(struct kmsg_dumper *dumper);
44*595dd3d8SRandy Dunlap #else
45*595dd3d8SRandy Dunlap static inline void kmsg_dump(enum kmsg_dump_reason reason)
46*595dd3d8SRandy Dunlap {
47*595dd3d8SRandy Dunlap }
48*595dd3d8SRandy Dunlap 
49*595dd3d8SRandy Dunlap static inline int kmsg_dump_register(struct kmsg_dumper *dumper)
50*595dd3d8SRandy Dunlap {
51*595dd3d8SRandy Dunlap 	return -EINVAL;
52*595dd3d8SRandy Dunlap }
53*595dd3d8SRandy Dunlap 
54*595dd3d8SRandy Dunlap static inline int kmsg_dump_unregister(struct kmsg_dumper *dumper)
55*595dd3d8SRandy Dunlap {
56*595dd3d8SRandy Dunlap 	return -EINVAL;
57*595dd3d8SRandy Dunlap }
58*595dd3d8SRandy Dunlap #endif
59456b565cSSimon Kagstrom 
60456b565cSSimon Kagstrom #endif /* _LINUX_KMSG_DUMP_H */
61