add-vmcore: add nodemask_t's size and NR_FREE_PAGES's value to vmcoreinfo_data
authorKen'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp>
Wed, 17 Oct 2007 06:27:28 +0000 (23:27 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Wed, 17 Oct 2007 15:42:54 +0000 (08:42 -0700)
[2/3] Add nodemask_t's size and NR_FREE_PAGES's value to vmcoreinfo_data.
  The dump filetering command 'makedumpfile'(v1.1.6 or before) had assumed
  the above values, and it was not good from the reliability viewpoint.
  So makedumpfile v1.2.0 came to need these values and I created the patch
  to let the kernel output them.
  makedumpfile site:
  https://sourceforge.net/projects/makedumpfile/

Signed-off-by: Ken'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/kexec.h
kernel/kexec.c

index 83337456b7162e78e29520b5493ae0a86f2eae44..db15a94769b3b32ec2adffa21dccc82798eb3a53 100644 (file)
@@ -132,11 +132,16 @@ unsigned long paddr_vmcoreinfo_note(void);
 #define SIZE(name) \
        vmcoreinfo_append_str("SIZE(%s)=%lu\n", #name, \
                              (unsigned long)sizeof(struct name))
 #define SIZE(name) \
        vmcoreinfo_append_str("SIZE(%s)=%lu\n", #name, \
                              (unsigned long)sizeof(struct name))
+#define TYPEDEF_SIZE(name) \
+       vmcoreinfo_append_str("SIZE(%s)=%lu\n", #name, \
+                             (unsigned long)sizeof(name))
 #define OFFSET(name, field) \
        vmcoreinfo_append_str("OFFSET(%s.%s)=%lu\n", #name, #field, \
                              (unsigned long)&(((struct name *)0)->field))
 #define LENGTH(name, value) \
        vmcoreinfo_append_str("LENGTH(%s)=%lu\n", #name, (unsigned long)value)
 #define OFFSET(name, field) \
        vmcoreinfo_append_str("OFFSET(%s.%s)=%lu\n", #name, #field, \
                              (unsigned long)&(((struct name *)0)->field))
 #define LENGTH(name, value) \
        vmcoreinfo_append_str("LENGTH(%s)=%lu\n", #name, (unsigned long)value)
+#define NUMBER(name) \
+       vmcoreinfo_append_str("NUMBER(%s)=%ld\n", #name, (long)name)
 #define CONFIG(name) \
        vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
 
 #define CONFIG(name) \
        vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
 
index b979b010b6d8b98b5b2ab699cb304c8ae17f3989..578bde9bbc98caf86d5865e0822a25aac36ffd53 100644 (file)
@@ -1218,6 +1218,7 @@ static int __init crash_save_vmcoreinfo_init(void)
        SIZE(zone);
        SIZE(free_area);
        SIZE(list_head);
        SIZE(zone);
        SIZE(free_area);
        SIZE(list_head);
+       TYPEDEF_SIZE(nodemask_t);
        OFFSET(page, flags);
        OFFSET(page, _count);
        OFFSET(page, mapping);
        OFFSET(page, flags);
        OFFSET(page, _count);
        OFFSET(page, mapping);
@@ -1237,6 +1238,7 @@ static int __init crash_save_vmcoreinfo_init(void)
        OFFSET(list_head, next);
        OFFSET(list_head, prev);
        LENGTH(zone.free_area, MAX_ORDER);
        OFFSET(list_head, next);
        OFFSET(list_head, prev);
        LENGTH(zone.free_area, MAX_ORDER);
+       NUMBER(NR_FREE_PAGES);
 
        arch_crash_save_vmcoreinfo();
 
 
        arch_crash_save_vmcoreinfo();