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