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