These should normally be exported as VMCOREINFO from kernel, but we cannot modify old kernels and still they are easy to be determined becasue of a small kernel version dependency with no symbol and type information. - PG_slab has had the same value 7 since v2.6.15, and - PG_buddy has been defined as macro value from v2.6.17 to v2.6.26 On other versions, pageflags enumeration type is introduced and at the version, PG_buddy's value depends on CONFIG_PAGEFLAGS_EXTEND; luckily, this can be determined by looking at error_states array, for example, but I don't implement it in this patch. Signed-off-by: HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com> --- makedumpfile.c | 6 ++++++ makedumpfile.h | 3 +++ 2 files changed, 9 insertions(+), 0 deletions(-) diff --git a/makedumpfile.c b/makedumpfile.c index d8da608..bed74df 100644 --- a/makedumpfile.c +++ b/makedumpfile.c @@ -1179,6 +1179,12 @@ get_value_for_old_linux(void) NUMBER(PG_private) = PG_private_ORIGINAL; if (NUMBER(PG_swapcache) == NOT_FOUND_NUMBER) NUMBER(PG_swapcache) = PG_swapcache_ORIGINAL; + if (NUMBER(PG_slab) == NOT_FOUND_NUMBER) + NUMBER(PG_slab) = PG_slab_ORIGINAL; + if (NUMBER(PG_buddy) == NOT_FOUND_NUMBER + && info->kernel_version >= KERNEL_VERSION(2, 6, 17) + && info->kernel_version <= KERNEL_VERSION(2, 6, 26)) + NUMBER(PG_buddy) = PG_buddy_v2_6_17_to_v2_6_26; return TRUE; } diff --git a/makedumpfile.h b/makedumpfile.h index 2808871..3059a9e 100644 --- a/makedumpfile.h +++ b/makedumpfile.h @@ -68,9 +68,12 @@ int get_mem_type(void); * The following values are for linux-2.6.25 or former. */ #define PG_lru_ORIGINAL (5) +#define PG_slab_ORIGINAL (7) #define PG_private_ORIGINAL (11) /* Has something at ->private */ #define PG_swapcache_ORIGINAL (15) /* Swap page: swp_entry_t in private */ +#define PG_buddy_v2_6_17_to_v2_6_26 (19) + #define PAGE_MAPPING_ANON (1) #define LSEEKED_BITMAP (1)