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