1456b565cSSimon Kagstrom /* 2456b565cSSimon Kagstrom * linux/include/kmsg_dump.h 3456b565cSSimon Kagstrom * 4456b565cSSimon Kagstrom * Copyright (C) 2009 Net Insight AB 5456b565cSSimon Kagstrom * 6456b565cSSimon Kagstrom * Author: Simon Kagstrom <simon.kagstrom@netinsight.net> 7456b565cSSimon Kagstrom * 8456b565cSSimon Kagstrom * This file is subject to the terms and conditions of the GNU General Public 9456b565cSSimon Kagstrom * License. See the file COPYING in the main directory of this archive 10456b565cSSimon Kagstrom * for more details. 11456b565cSSimon Kagstrom */ 12456b565cSSimon Kagstrom #ifndef _LINUX_KMSG_DUMP_H 13456b565cSSimon Kagstrom #define _LINUX_KMSG_DUMP_H 14456b565cSSimon Kagstrom 15456b565cSSimon Kagstrom #include <linux/list.h> 16456b565cSSimon Kagstrom 17456b565cSSimon Kagstrom enum kmsg_dump_reason { 18456b565cSSimon Kagstrom KMSG_DUMP_OOPS, 19456b565cSSimon Kagstrom KMSG_DUMP_PANIC, 20456b565cSSimon Kagstrom }; 21456b565cSSimon Kagstrom 22456b565cSSimon Kagstrom /** 23456b565cSSimon Kagstrom * struct kmsg_dumper - kernel crash message dumper structure 24456b565cSSimon Kagstrom * @dump: The callback which gets called on crashes. The buffer is passed 25456b565cSSimon Kagstrom * as two sections, where s1 (length l1) contains the older 26456b565cSSimon Kagstrom * messages and s2 (length l2) contains the newer. 27456b565cSSimon Kagstrom * @list: Entry in the dumper list (private) 28456b565cSSimon Kagstrom * @registered: Flag that specifies if this is already registered 29456b565cSSimon Kagstrom */ 30456b565cSSimon Kagstrom struct kmsg_dumper { 31456b565cSSimon Kagstrom void (*dump)(struct kmsg_dumper *dumper, enum kmsg_dump_reason reason, 32456b565cSSimon Kagstrom const char *s1, unsigned long l1, 33456b565cSSimon Kagstrom const char *s2, unsigned long l2); 34456b565cSSimon Kagstrom struct list_head list; 35456b565cSSimon Kagstrom int registered; 36456b565cSSimon Kagstrom }; 37456b565cSSimon Kagstrom 38*595dd3d8SRandy Dunlap #ifdef CONFIG_PRINTK 39456b565cSSimon Kagstrom void kmsg_dump(enum kmsg_dump_reason reason); 40456b565cSSimon Kagstrom 41456b565cSSimon Kagstrom int kmsg_dump_register(struct kmsg_dumper *dumper); 42456b565cSSimon Kagstrom 43456b565cSSimon Kagstrom int kmsg_dump_unregister(struct kmsg_dumper *dumper); 44*595dd3d8SRandy Dunlap #else 45*595dd3d8SRandy Dunlap static inline void kmsg_dump(enum kmsg_dump_reason reason) 46*595dd3d8SRandy Dunlap { 47*595dd3d8SRandy Dunlap } 48*595dd3d8SRandy Dunlap 49*595dd3d8SRandy Dunlap static inline int kmsg_dump_register(struct kmsg_dumper *dumper) 50*595dd3d8SRandy Dunlap { 51*595dd3d8SRandy Dunlap return -EINVAL; 52*595dd3d8SRandy Dunlap } 53*595dd3d8SRandy Dunlap 54*595dd3d8SRandy Dunlap static inline int kmsg_dump_unregister(struct kmsg_dumper *dumper) 55*595dd3d8SRandy Dunlap { 56*595dd3d8SRandy Dunlap return -EINVAL; 57*595dd3d8SRandy Dunlap } 58*595dd3d8SRandy Dunlap #endif 59456b565cSSimon Kagstrom 60456b565cSSimon Kagstrom #endif /* _LINUX_KMSG_DUMP_H */ 61