generic: fix crashlog patch for 3.6

kmsg_dump() uses an iterator to receive log buffer
content since 3.5. Change the 'crashlog_do_dump'
function in order to make it compatible with the
new version.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 33970
This commit is contained in:
Gabor Juhos 2012-10-28 09:50:50 +00:00
parent e2ec99889e
commit 9a37cf7ec6

View file

@ -43,7 +43,7 @@
--- /dev/null --- /dev/null
+++ b/kernel/crashlog.c +++ b/kernel/crashlog.c
@@ -0,0 +1,190 @@ @@ -0,0 +1,181 @@
+/* +/*
+ * Crash information logger + * Crash information logger
+ * Copyright (C) 2010 Felix Fietkau <nbd@openwrt.org> + * Copyright (C) 2010 Felix Fietkau <nbd@openwrt.org>
@ -173,15 +173,12 @@
+} +}
+ +
+static void crashlog_do_dump(struct kmsg_dumper *dumper, +static void crashlog_do_dump(struct kmsg_dumper *dumper,
+ enum kmsg_dump_reason reason, const char *s1, unsigned long l1, + enum kmsg_dump_reason reason)
+ const char *s2, unsigned long l2)
+{ +{
+ unsigned long s1_start, s2_start;
+ unsigned long l1_cpy, l2_cpy;
+ struct timeval tv; + struct timeval tv;
+ struct module *m; + struct module *m;
+ char *buf; + char *buf;
+ int len; + size_t len;
+ +
+ if (!first) + if (!first)
+ crashlog_printf("\n===================================\n"); + crashlog_printf("\n===================================\n");
@ -202,17 +199,10 @@
+ } + }
+ +
+ buf = (char *)&crashlog_buf->data[crashlog_buf->len]; + buf = (char *)&crashlog_buf->data[crashlog_buf->len];
+ len = get_maxlen();
+ +
+ l2_cpy = min(l2, (unsigned long)len); + kmsg_dump_get_buffer(dumper, true, buf, get_maxlen(), &len);
+ l1_cpy = min(l1, (unsigned long)len - l2_cpy);
+ +
+ s2_start = l2 - l2_cpy; + crashlog_buf->len += len;
+ s1_start = l1 - l1_cpy;
+
+ memcpy(buf, s1 + s1_start, l1_cpy);
+ memcpy(buf + l1_cpy, s2 + s2_start, l2_cpy);
+ crashlog_buf->len += l1_cpy + l2_cpy;
+} +}
+ +
+ +
@ -228,6 +218,7 @@
+ crashlog_buf->magic = CRASHLOG_MAGIC; + crashlog_buf->magic = CRASHLOG_MAGIC;
+ crashlog_buf->len = 0; + crashlog_buf->len = 0;
+ +
+ dump.max_reason = KMSG_DUMP_OOPS;
+ dump.dump = crashlog_do_dump; + dump.dump = crashlog_do_dump;
+ kmsg_dump_register(&dump); + kmsg_dump_register(&dump);
+ +