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édronkmsg_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édronkmsg_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