]>
Commit | Line | Data |
---|---|---|
456b565c SK |
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 | ||
ac562241 | 15 | #include <linux/errno.h> |
456b565c SK |
16 | #include <linux/list.h> |
17 | ||
c22ab332 MG |
18 | /* |
19 | * Keep this list arranged in rough order of priority. Anything listed after | |
20 | * KMSG_DUMP_OOPS will not be logged by default unless printk.always_kmsg_dump | |
21 | * is passed to the kernel. | |
22 | */ | |
456b565c | 23 | enum kmsg_dump_reason { |
e2ae715d | 24 | KMSG_DUMP_UNDEF, |
456b565c | 25 | KMSG_DUMP_PANIC, |
c22ab332 MG |
26 | KMSG_DUMP_OOPS, |
27 | KMSG_DUMP_EMERG, | |
6d3cf962 | 28 | KMSG_DUMP_SHUTDOWN, |
b1f6f161 | 29 | KMSG_DUMP_MAX |
456b565c SK |
30 | }; |
31 | ||
32 | /** | |
33 | * struct kmsg_dumper - kernel crash message dumper structure | |
456b565c | 34 | * @list: Entry in the dumper list (private) |
e2ae715d KS |
35 | * @dump: Call into dumping code which will retrieve the data with |
36 | * through the record iterator | |
37 | * @max_reason: filter for highest reason number that should be dumped | |
456b565c SK |
38 | * @registered: Flag that specifies if this is already registered |
39 | */ | |
40 | struct kmsg_dumper { | |
456b565c | 41 | struct list_head list; |
e2ae715d KS |
42 | void (*dump)(struct kmsg_dumper *dumper, enum kmsg_dump_reason reason); |
43 | enum kmsg_dump_reason max_reason; | |
44 | bool active; | |
45 | bool registered; | |
46 | ||
47 | /* private state of the kmsg iterator */ | |
48 | u32 cur_idx; | |
49 | u32 next_idx; | |
50 | u64 cur_seq; | |
51 | u64 next_seq; | |
456b565c SK |
52 | }; |
53 | ||
595dd3d8 | 54 | #ifdef CONFIG_PRINTK |
456b565c SK |
55 | void kmsg_dump(enum kmsg_dump_reason reason); |
56 | ||
533827c9 AV |
57 | bool kmsg_dump_get_line_nolock(struct kmsg_dumper *dumper, bool syslog, |
58 | char *line, size_t size, size_t *len); | |
59 | ||
e2ae715d KS |
60 | bool kmsg_dump_get_line(struct kmsg_dumper *dumper, bool syslog, |
61 | char *line, size_t size, size_t *len); | |
62 | ||
63 | bool kmsg_dump_get_buffer(struct kmsg_dumper *dumper, bool syslog, | |
64 | char *buf, size_t size, size_t *len); | |
65 | ||
533827c9 AV |
66 | void kmsg_dump_rewind_nolock(struct kmsg_dumper *dumper); |
67 | ||
e2ae715d KS |
68 | void kmsg_dump_rewind(struct kmsg_dumper *dumper); |
69 | ||
456b565c SK |
70 | int kmsg_dump_register(struct kmsg_dumper *dumper); |
71 | ||
72 | int kmsg_dump_unregister(struct kmsg_dumper *dumper); | |
fb13cb8a KC |
73 | |
74 | const char *kmsg_dump_reason_str(enum kmsg_dump_reason reason); | |
595dd3d8 RD |
75 | #else |
76 | static inline void kmsg_dump(enum kmsg_dump_reason reason) | |
77 | { | |
78 | } | |
79 | ||
533827c9 AV |
80 | static inline bool kmsg_dump_get_line_nolock(struct kmsg_dumper *dumper, |
81 | bool syslog, const char *line, | |
82 | size_t size, size_t *len) | |
83 | { | |
84 | return false; | |
85 | } | |
86 | ||
246f6f2f KS |
87 | static inline bool kmsg_dump_get_line(struct kmsg_dumper *dumper, bool syslog, |
88 | const char *line, size_t size, size_t *len) | |
e2ae715d KS |
89 | { |
90 | return false; | |
91 | } | |
92 | ||
246f6f2f KS |
93 | static inline bool kmsg_dump_get_buffer(struct kmsg_dumper *dumper, bool syslog, |
94 | char *buf, size_t size, size_t *len) | |
e2ae715d KS |
95 | { |
96 | return false; | |
97 | } | |
98 | ||
533827c9 AV |
99 | static inline void kmsg_dump_rewind_nolock(struct kmsg_dumper *dumper) |
100 | { | |
101 | } | |
102 | ||
246f6f2f | 103 | static inline void kmsg_dump_rewind(struct kmsg_dumper *dumper) |
e2ae715d KS |
104 | { |
105 | } | |
106 | ||
595dd3d8 RD |
107 | static inline int kmsg_dump_register(struct kmsg_dumper *dumper) |
108 | { | |
109 | return -EINVAL; | |
110 | } | |
111 | ||
112 | static inline int kmsg_dump_unregister(struct kmsg_dumper *dumper) | |
113 | { | |
114 | return -EINVAL; | |
115 | } | |
fb13cb8a KC |
116 | |
117 | static inline const char *kmsg_dump_reason_str(enum kmsg_dump_reason reason) | |
118 | { | |
119 | return "Disabled"; | |
120 | } | |
595dd3d8 | 121 | #endif |
456b565c SK |
122 | |
123 | #endif /* _LINUX_KMSG_DUMP_H */ |