summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKay Sievers <kay@vrfy.org>2012-05-29 17:46:37 +0200
committerKay Sievers <kay@vrfy.org>2012-05-29 17:46:37 +0200
commit3d21d9e2190fde998f1a48b28c3b90e1f5ba1551 (patch)
tree2813b9bbb3cb374df708977552b233057c2f754a
parent8882074809fa798f8f183c549f72e15c190085da (diff)
downloadpatches-3d21d9e2190fde998f1a48b28c3b90e1f5ba1551.tar.gz
add dump test module
-rw-r--r--series3
-rw-r--r--test-modules.patch (renamed from printk-race.patch)87
2 files changed, 83 insertions, 7 deletions
diff --git a/series b/series
index d2c7e7f..5f8e567 100644
--- a/series
+++ b/series
@@ -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 @@