xref: /freebsd/sys/compat/linuxkpi/common/include/linux/kmsg_dump.h (revision e86e4f161e7232b7ac19af906368c664d6167cdc)
1*e86e4f16SJean-Sébastien Pédron /*
2*e86e4f16SJean-Sébastien Pédron  * SPDX-License-Identifier: BSD-2-Clause
3*e86e4f16SJean-Sébastien Pédron  *
4*e86e4f16SJean-Sébastien Pédron  * Copyright (c) 2025-2026 The FreeBSD Foundation
5*e86e4f16SJean-Sébastien Pédron  * Copyright (c) 2025-2026 Jean-Sébastien Pédron <dumbbell@FreeBSD.org>
6*e86e4f16SJean-Sébastien Pédron  *
7*e86e4f16SJean-Sébastien Pédron  * This software was developed by Jean-Sébastien Pédron under sponsorship
8*e86e4f16SJean-Sébastien Pédron  * from the FreeBSD Foundation.
9*e86e4f16SJean-Sébastien Pédron  */
10*e86e4f16SJean-Sébastien Pédron 
11*e86e4f16SJean-Sébastien Pédron #ifndef _LINUXKPI_LINUX_KMSG_DUMP_H_
12*e86e4f16SJean-Sébastien Pédron #define	_LINUXKPI_LINUX_KMSG_DUMP_H_
13*e86e4f16SJean-Sébastien Pédron 
14*e86e4f16SJean-Sébastien Pédron #include <linux/errno.h>
15*e86e4f16SJean-Sébastien Pédron #include <linux/list.h>
16*e86e4f16SJean-Sébastien Pédron 
17*e86e4f16SJean-Sébastien Pédron #include <linux/kernel.h> /* For pr_debug() */
18*e86e4f16SJean-Sébastien Pédron 
19*e86e4f16SJean-Sébastien Pédron enum kmsg_dump_reason {
20*e86e4f16SJean-Sébastien Pédron 	KMSG_DUMP_UNDEF,
21*e86e4f16SJean-Sébastien Pédron 	KMSG_DUMP_PANIC,
22*e86e4f16SJean-Sébastien Pédron 	KMSG_DUMP_OOPS,
23*e86e4f16SJean-Sébastien Pédron 	KMSG_DUMP_EMERG,
24*e86e4f16SJean-Sébastien Pédron 	KMSG_DUMP_SHUTDOWN,
25*e86e4f16SJean-Sébastien Pédron 	KMSG_DUMP_MAX
26*e86e4f16SJean-Sébastien Pédron };
27*e86e4f16SJean-Sébastien Pédron 
28*e86e4f16SJean-Sébastien Pédron struct kmsg_dumper {
29*e86e4f16SJean-Sébastien Pédron 	struct list_head list;
30*e86e4f16SJean-Sébastien Pédron 	void (*dump)(struct kmsg_dumper *dumper, enum kmsg_dump_reason reason);
31*e86e4f16SJean-Sébastien Pédron 	enum kmsg_dump_reason max_reason;
32*e86e4f16SJean-Sébastien Pédron 	bool registered;
33*e86e4f16SJean-Sébastien Pédron };
34*e86e4f16SJean-Sébastien Pédron 
35*e86e4f16SJean-Sébastien Pédron static inline int
kmsg_dump_register(struct kmsg_dumper * dumper)36*e86e4f16SJean-Sébastien Pédron kmsg_dump_register(struct kmsg_dumper *dumper)
37*e86e4f16SJean-Sébastien Pédron {
38*e86e4f16SJean-Sébastien Pédron 	pr_debug("TODO");
39*e86e4f16SJean-Sébastien Pédron 
40*e86e4f16SJean-Sébastien Pédron 	return (-EINVAL);
41*e86e4f16SJean-Sébastien Pédron }
42*e86e4f16SJean-Sébastien Pédron 
43*e86e4f16SJean-Sébastien Pédron static inline int
kmsg_dump_unregister(struct kmsg_dumper * dumper)44*e86e4f16SJean-Sébastien Pédron kmsg_dump_unregister(struct kmsg_dumper *dumper)
45*e86e4f16SJean-Sébastien Pédron {
46*e86e4f16SJean-Sébastien Pédron 	pr_debug("TODO");
47*e86e4f16SJean-Sébastien Pédron 
48*e86e4f16SJean-Sébastien Pédron 	return (-EINVAL);
49*e86e4f16SJean-Sébastien Pédron }
50*e86e4f16SJean-Sébastien Pédron 
51*e86e4f16SJean-Sébastien Pédron #endif
52