diff options
author | Kay Sievers <kay@vrfy.org> | 2012-05-29 17:46:37 +0200 |
---|---|---|
committer | Kay Sievers <kay@vrfy.org> | 2012-05-29 17:46:37 +0200 |
commit | 3d21d9e2190fde998f1a48b28c3b90e1f5ba1551 (patch) | |
tree | 2813b9bbb3cb374df708977552b233057c2f754a | |
parent | 8882074809fa798f8f183c549f72e15c190085da (diff) | |
download | patches-3d21d9e2190fde998f1a48b28c3b90e1f5ba1551.tar.gz |
add dump test module
-rw-r--r-- | series | 3 | ||||
-rw-r--r-- | test-modules.patch (renamed from printk-race.patch) | 87 |
2 files changed, 83 insertions, 7 deletions
@@ -1,3 +1,2 @@ -printk-race.patch +test-modules.patch kmsg_dump.patch - diff --git a/printk-race.patch b/test-modules.patch index 73dc7f4..2d622b6 100644 --- a/printk-race.patch +++ b/test-modules.patch @@ -1,8 +1,9 @@ --- drivers/misc/Kconfig | 6 +++ - drivers/misc/Makefile | 1 - drivers/misc/printk-race.c | 70 +++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 77 insertions(+) + drivers/misc/Makefile | 2 + + drivers/misc/dump-test.c | 72 +++++++++++++++++++++++++++++++++++++++++++++ + drivers/misc/printk-race.c | 70 +++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 150 insertions(+) --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig @@ -21,11 +22,87 @@ source "drivers/misc/cb710/Kconfig" --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile -@@ -51,3 +51,4 @@ obj-y += carma/ +@@ -51,3 +51,5 @@ obj-y += carma/ obj-$(CONFIG_USB_SWITCH_FSA9480) += fsa9480.o obj-$(CONFIG_ALTERA_STAPL) +=altera-stapl/ obj-$(CONFIG_INTEL_MEI) += mei/ -+obj-$(CONFIG_PRINTK_RACE) +=printk-race.o ++obj-m += printk-race.o ++obj-y += dump-test.o +--- /dev/null ++++ b/drivers/misc/dump-test.c +@@ -0,0 +1,72 @@ ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/kmsg_dump.h> ++ ++static char buf[64 * 1024]; ++ ++static int trigger_dump(const char *str, struct kernel_param *kp) ++{ ++ kmsg_dump(KMSG_DUMP_OOPS); ++ return 0; ++} ++module_param_call(dump, trigger_dump, NULL, NULL, 0600); ++ ++static void test_dump(struct kmsg_dumper *dumper, ++ enum kmsg_dump_reason reason) ++{ ++ char s[512]; ++ size_t len = 0; ++ size_t l; ++ int i = 0; ++ ++#if 0 ++ while (kmsg_dump_get_line(dumper, true, buf + len, sizeof(buf) - len, &l)) { ++ i++; ++ len += l; ++ } ++#else ++ while (len < sizeof(buf)) { ++ len += sprintf(buf + len, "#### Dump %i at %zi\n", i, len); ++ ++ if (!kmsg_dump_get_buffer(dumper, true, buf + len, sizeof(buf), &l)) ++ break; ++ ++ len += l; ++ i++; ++ } ++#endif ++ ++ printk("#### dumped %i pages, and %zi bytes\n", i, len); ++ ++ memcpy(s, buf, 511); ++ s[511] = '\0'; ++ printk("#### '%s'\n", s); ++ ++ memcpy(s, buf + (len-512), 511); ++ s[511] = '\0'; ++ printk("#### '%s'\n", s); ++} ++ ++static struct kmsg_dumper test_dumper = { ++ .dump = test_dump, ++}; ++ ++static int __init test_init(void) ++{ ++ printk(KERN_DEFAULT "dump test init\n"); ++ kmsg_dump_register(&test_dumper); ++ return 0; ++} ++ ++static void __exit test_exit(void) ++{ ++ kmsg_dump_unregister(&test_dumper); ++ printk(KERN_DEFAULT "dump test cleanup\n"); ++} ++ ++module_init(test_init); ++module_exit(test_exit); ++MODULE_LICENSE("GPL"); ++MODULE_AUTHOR("Kay Sievers <kay@vrfy.org>"); ++MODULE_DESCRIPTION("kmsg dump test"); --- /dev/null +++ b/drivers/misc/printk-race.c @@ -0,0 +1,70 @@ |