ramoops: parse the message
authorMinkyu Kang <mk7.kang@samsung.com>
Mon, 22 Nov 2010 07:10:57 +0000 (16:10 +0900)
committerMinkyu Kang <mk7.kang@samsung.com>
Mon, 22 Nov 2010 07:10:57 +0000 (16:10 +0900)
remove printk time

Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
drivers/misc/ramoops.c

index 186549b..00aa98e 100644 (file)
@@ -48,18 +48,42 @@ static void ramoops_show(void)
 #endif
 }
 
+void ramoops_parser(char *raw)
+{
+       int i;
+       int start = 0;
+       int offset = 0;
+
+       for (i = 0; i < RAMOOPS_SIZE; i++) {
+               if (raw[i] == '[' && raw[i + 13] ==']') {
+                       int size = i - 3 - start;
+
+                       memcpy(msg + offset, raw + start, size);
+
+                       offset += size;
+                       start = i + 15;
+                       i += 15;
+               }
+       }
+
+       memcpy(msg + offset, raw + start, RAMOOPS_SIZE - start);
+}
+
 int ramoops_init(unsigned int base)
 {
        unsigned int *msg_header = (unsigned int *)base;
+       char raw[RAMOOPS_SIZE];
 
        dumped = 0;
 
        if (*msg_header != RAMOOPS_HEADER)
                return -1;
 
-       memcpy(msg, (void *)base, RAMOOPS_SIZE);
+       memcpy(raw, (void *)base, RAMOOPS_SIZE);
        memset((void *)base, 0x0, RAMOOPS_SIZE);
 
+       ramoops_parser(raw);
+
        dumped = 1;
 
        ramoops_show();