xref: /freebsd/sys/compat/linuxkpi/common/include/linux/kmsg_dump.h (revision ade8a27ea4c28d12fabc2d5f8e44386a3add23d1)
1 /*
2  * SPDX-License-Identifier: BSD-2-Clause
3  *
4  * Copyright (c) 2025-2026 The FreeBSD Foundation
5  * Copyright (c) 2025-2026 Jean-Sébastien Pédron <dumbbell@FreeBSD.org>
6  *
7  * This software was developed by Jean-Sébastien Pédron under sponsorship
8  * from the FreeBSD Foundation.
9  */
10 
11 #ifndef _LINUXKPI_LINUX_KMSG_DUMP_H_
12 #define	_LINUXKPI_LINUX_KMSG_DUMP_H_
13 
14 #include <linux/errno.h>
15 #include <linux/list.h>
16 
17 #include <linux/kernel.h> /* For pr_debug() */
18 
19 enum kmsg_dump_reason {
20 	KMSG_DUMP_UNDEF,
21 	KMSG_DUMP_PANIC,
22 	KMSG_DUMP_OOPS,
23 	KMSG_DUMP_EMERG,
24 	KMSG_DUMP_SHUTDOWN,
25 	KMSG_DUMP_MAX
26 };
27 
28 struct kmsg_dump_iter {
29 	uint64_t	cur_seq;
30 	uint64_t	next_seq;
31 };
32 
33 struct kmsg_dump_detail {
34 	enum kmsg_dump_reason reason;
35 	const char *description;
36 };
37 
38 struct kmsg_dumper {
39 	struct list_head list;
40 #if defined(LINUXKPI_VERSION) && LINUXKPI_VERSION < 61200
41 	void (*dump)(struct kmsg_dumper *dumper, enum kmsg_dump_reason reason);
42 #else
43 	void (*dump)(struct kmsg_dumper *dumper, struct kmsg_dump_detail *detail);
44 #endif
45 	enum kmsg_dump_reason max_reason;
46 	bool registered;
47 };
48 
49 static inline void
50 kmsg_dump(enum kmsg_dump_reason reason)
51 {
52 	pr_debug("TODO");
53 }
54 
55 static inline bool
56 kmsg_dump_get_line(struct kmsg_dump_iter *iter, bool syslog,
57     const char *line, size_t size, size_t *len)
58 {
59 	pr_debug("TODO");
60 
61 	return (false);
62 }
63 
64 static inline bool
65 kmsg_dump_get_buffer(struct kmsg_dump_iter *iter, bool syslog,
66     char *buf, size_t size, size_t *len)
67 {
68 	pr_debug("TODO");
69 
70 	return (false);
71 }
72 
73 static inline void
74 kmsg_dump_rewind(struct kmsg_dump_iter *iter)
75 {
76 	pr_debug("TODO");
77 }
78 
79 static inline int
80 kmsg_dump_register(struct kmsg_dumper *dumper)
81 {
82 	pr_debug("TODO");
83 
84 	return (-EINVAL);
85 }
86 
87 static inline int
88 kmsg_dump_unregister(struct kmsg_dumper *dumper)
89 {
90 	pr_debug("TODO");
91 
92 	return (-EINVAL);
93 }
94 
95 static inline const char *
96 kmsg_dump_reason_str(enum kmsg_dump_reason reason)
97 {
98 	pr_debug("TODO");
99 
100 	return ("Unknown");
101 }
102 #endif
103