diff options
author | Ken'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp> | 2007-10-17 02:27:28 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-17 11:42:54 -0400 |
commit | 6cfa062f01b601206b980e503f62dc593ed8fcaa (patch) | |
tree | 17cf10b2c569b464a4045679294e5b3c11a29a67 | |
parent | d768281e97a403815467102bc4b677f6c425a42b (diff) |
add-vmcore: add nodemask_t's size and NR_FREE_PAGES's value to vmcoreinfo_data
[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>
-rw-r--r-- | include/linux/kexec.h | 5 | ||||
-rw-r--r-- | kernel/kexec.c | 2 |
2 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/kexec.h b/include/linux/kexec.h index 83337456b716..db15a94769b3 100644 --- a/include/linux/kexec.h +++ b/include/linux/kexec.h | |||
@@ -132,11 +132,16 @@ unsigned long paddr_vmcoreinfo_note(void); | |||
132 | #define SIZE(name) \ | 132 | #define SIZE(name) \ |
133 | vmcoreinfo_append_str("SIZE(%s)=%lu\n", #name, \ | 133 | vmcoreinfo_append_str("SIZE(%s)=%lu\n", #name, \ |
134 | (unsigned long)sizeof(struct name)) | 134 | (unsigned long)sizeof(struct name)) |
135 | #define TYPEDEF_SIZE(name) \ | ||
136 | vmcoreinfo_append_str("SIZE(%s)=%lu\n", #name, \ | ||
137 | (unsigned long)sizeof(name)) | ||
135 | #define OFFSET(name, field) \ | 138 | #define OFFSET(name, field) \ |
136 | vmcoreinfo_append_str("OFFSET(%s.%s)=%lu\n", #name, #field, \ | 139 | vmcoreinfo_append_str("OFFSET(%s.%s)=%lu\n", #name, #field, \ |
137 | (unsigned long)&(((struct name *)0)->field)) | 140 | (unsigned long)&(((struct name *)0)->field)) |
138 | #define LENGTH(name, value) \ | 141 | #define LENGTH(name, value) \ |
139 | vmcoreinfo_append_str("LENGTH(%s)=%lu\n", #name, (unsigned long)value) | 142 | vmcoreinfo_append_str("LENGTH(%s)=%lu\n", #name, (unsigned long)value) |
143 | #define NUMBER(name) \ | ||
144 | vmcoreinfo_append_str("NUMBER(%s)=%ld\n", #name, (long)name) | ||
140 | #define CONFIG(name) \ | 145 | #define CONFIG(name) \ |
141 | vmcoreinfo_append_str("CONFIG_%s=y\n", #name) | 146 | vmcoreinfo_append_str("CONFIG_%s=y\n", #name) |
142 | 147 | ||
diff --git a/kernel/kexec.c b/kernel/kexec.c index b979b010b6d8..578bde9bbc98 100644 --- a/kernel/kexec.c +++ b/kernel/kexec.c | |||
@@ -1218,6 +1218,7 @@ static int __init crash_save_vmcoreinfo_init(void) | |||
1218 | SIZE(zone); | 1218 | SIZE(zone); |
1219 | SIZE(free_area); | 1219 | SIZE(free_area); |
1220 | SIZE(list_head); | 1220 | SIZE(list_head); |
1221 | TYPEDEF_SIZE(nodemask_t); | ||
1221 | OFFSET(page, flags); | 1222 | OFFSET(page, flags); |
1222 | OFFSET(page, _count); | 1223 | OFFSET(page, _count); |
1223 | OFFSET(page, mapping); | 1224 | OFFSET(page, mapping); |
@@ -1237,6 +1238,7 @@ static int __init crash_save_vmcoreinfo_init(void) | |||
1237 | OFFSET(list_head, next); | 1238 | OFFSET(list_head, next); |
1238 | OFFSET(list_head, prev); | 1239 | OFFSET(list_head, prev); |
1239 | LENGTH(zone.free_area, MAX_ORDER); | 1240 | LENGTH(zone.free_area, MAX_ORDER); |
1241 | NUMBER(NR_FREE_PAGES); | ||
1240 | 1242 | ||
1241 | arch_crash_save_vmcoreinfo(); | 1243 | arch_crash_save_vmcoreinfo(); |
1242 | 1244 | ||