@@ -29,6 +29,16 @@ enum kmsg_dump_reason {
2929 KMSG_DUMP_MAX
3030};
3131
32+ /**
33+ * struct kmsg_dump_iter - iterator for retrieving kernel messages
34+ * @cur_seq: Points to the oldest message to dump
35+ * @next_seq: Points after the newest message to dump
36+ */
37+ struct kmsg_dump_iter {
38+ u64 cur_seq ;
39+ u64 next_seq ;
40+ };
41+
3242/**
3343 * struct kmsg_dumper - kernel crash message dumper structure
3444 * @list: Entry in the dumper list (private)
@@ -41,31 +51,19 @@ struct kmsg_dumper {
4151 struct list_head list ;
4252 void (* dump )(struct kmsg_dumper * dumper , enum kmsg_dump_reason reason );
4353 enum kmsg_dump_reason max_reason ;
44- bool active ;
4554 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 ;
5255};
5356
5457#ifdef CONFIG_PRINTK
5558void kmsg_dump (enum kmsg_dump_reason reason );
5659
57- bool kmsg_dump_get_line_nolock (struct kmsg_dumper * dumper , bool syslog ,
58- char * line , size_t size , size_t * len );
59-
60- bool kmsg_dump_get_line (struct kmsg_dumper * dumper , bool syslog ,
60+ bool kmsg_dump_get_line (struct kmsg_dump_iter * iter , bool syslog ,
6161 char * line , size_t size , size_t * len );
6262
63- bool kmsg_dump_get_buffer (struct kmsg_dumper * dumper , bool syslog ,
64- char * buf , size_t size , size_t * len );
65-
66- void kmsg_dump_rewind_nolock (struct kmsg_dumper * dumper );
63+ bool kmsg_dump_get_buffer (struct kmsg_dump_iter * iter , bool syslog ,
64+ char * buf , size_t size , size_t * len_out );
6765
68- void kmsg_dump_rewind (struct kmsg_dumper * dumper );
66+ void kmsg_dump_rewind (struct kmsg_dump_iter * iter );
6967
7068int kmsg_dump_register (struct kmsg_dumper * dumper );
7169
@@ -77,30 +75,19 @@ static inline void kmsg_dump(enum kmsg_dump_reason reason)
7775{
7876}
7977
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-
87- static inline bool kmsg_dump_get_line (struct kmsg_dumper * dumper , bool syslog ,
78+ static inline bool kmsg_dump_get_line (struct kmsg_dump_iter * iter , bool syslog ,
8879 const char * line , size_t size , size_t * len )
8980{
9081 return false;
9182}
9283
93- static inline bool kmsg_dump_get_buffer (struct kmsg_dumper * dumper , bool syslog ,
84+ static inline bool kmsg_dump_get_buffer (struct kmsg_dump_iter * iter , bool syslog ,
9485 char * buf , size_t size , size_t * len )
9586{
9687 return false;
9788}
9889
99- static inline void kmsg_dump_rewind_nolock (struct kmsg_dumper * dumper )
100- {
101- }
102-
103- static inline void kmsg_dump_rewind (struct kmsg_dumper * dumper )
90+ static inline void kmsg_dump_rewind (struct kmsg_dump_iter * iter )
10491{
10592}
10693
0 commit comments