skas-mm-debug Signed-off-by: Paolo 'Blaisorblade' Giarrusso Index: linux-2.6.14/mm/Makefile =================================================================== --- linux-2.6.14.orig/mm/Makefile 2005-10-29 05:50:00.000000000 +0200 +++ linux-2.6.14/mm/Makefile 2005-10-29 05:50:34.000000000 +0200 @@ -22,3 +22,7 @@ obj-$(CONFIG_FS_XIP) += filemap_xip.o obj-$(CONFIG_PROC_MM) += proc_mm.o + +ifeq ($(CONFIG_PROC_MM),y) +obj-m += proc_mm-mod.o +endif Index: linux-2.6.14/mm/proc_mm-mod.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6.14/mm/proc_mm-mod.c 2005-10-29 05:50:34.000000000 +0200 @@ -0,0 +1,51 @@ +#include +#include +#include +#include +#include + +#ifdef CONFIG_64BIT +#define PRINT_OFFSET(type, member) \ + printk(KERN_DEBUG "struct " #type "32->" #member " \t: %ld\n", (long) offsetof(struct type ## 32, member)) +#else +#define PRINT_OFFSET(type, member) \ + printk(KERN_DEBUG "struct " #type "->" #member " \t: %ld\n", (long) offsetof(struct type, member)) +#endif + +static int debug_printoffsets(void) +{ + printk(KERN_DEBUG "Skas core structures layout BEGIN:\n"); + PRINT_OFFSET(mm_mmap, addr); + PRINT_OFFSET(mm_mmap, len); + PRINT_OFFSET(mm_mmap, prot); + PRINT_OFFSET(mm_mmap, flags); + PRINT_OFFSET(mm_mmap, fd); + PRINT_OFFSET(mm_mmap, offset); + + PRINT_OFFSET(mm_munmap, addr); + PRINT_OFFSET(mm_munmap, len); + + PRINT_OFFSET(mm_mprotect, addr); + PRINT_OFFSET(mm_mprotect, len); + PRINT_OFFSET(mm_mprotect, prot); + + PRINT_OFFSET(proc_mm_op, op); + PRINT_OFFSET(proc_mm_op, u); + PRINT_OFFSET(proc_mm_op, u.mmap); + PRINT_OFFSET(proc_mm_op, u.munmap); + PRINT_OFFSET(proc_mm_op, u.mprotect); + PRINT_OFFSET(proc_mm_op, u.copy_segments); + + PRINT_OFFSET(ptrace_faultinfo, is_write); + PRINT_OFFSET(ptrace_faultinfo, addr); + + PRINT_OFFSET(ptrace_ldt, func); + PRINT_OFFSET(ptrace_ldt, ptr); + PRINT_OFFSET(ptrace_ldt, bytecount); + printk(KERN_DEBUG "Skas core structures layout END.\n"); + + return 0; +} +#undef PRINT_OFFSET + +module_init(debug_printoffsets);