From: Mathieu Desnoyers [bunk@stusta.de: Never ever select MODULES] Signed-off-by: Mathieu Desnoyers Signed-off-by: Adrian Bunk Signed-off-by: Andrew Morton --- arch/alpha/Kconfig | 6 ++++++ arch/arm/Kconfig | 6 ++++++ arch/arm26/Kconfig | 6 ++++++ arch/cris/Kconfig | 6 ++++++ arch/frv/Kconfig | 6 ++++++ arch/h8300/Kconfig | 6 ++++++ arch/i386/Kconfig | 3 +++ arch/ia64/Kconfig | 3 +++ arch/m32r/Kconfig | 6 ++++++ arch/m68k/Kconfig | 6 ++++++ arch/m68knommu/Kconfig | 6 ++++++ arch/mips/Kconfig | 6 ++++++ arch/parisc/Kconfig | 6 ++++++ arch/powerpc/Kconfig | 3 +++ arch/ppc/Kconfig | 6 ++++++ arch/s390/Kconfig | 2 ++ arch/sh/Kconfig | 6 ++++++ arch/sh64/Kconfig | 6 ++++++ arch/sparc/Kconfig | 2 ++ arch/sparc64/Kconfig | 3 +++ arch/um/Kconfig | 6 ++++++ arch/v850/Kconfig | 6 ++++++ arch/x86_64/Kconfig | 3 +++ arch/xtensa/Kconfig | 6 ++++++ kernel/Kconfig.marker | 20 ++++++++++++++++++++ kernel/module.c | 1 + 26 files changed, 142 insertions(+) diff -puN Makefile~linux-kernel-markers-kconfig-menus Makefile diff -puN arch/alpha/Kconfig~linux-kernel-markers-kconfig-menus arch/alpha/Kconfig --- a/arch/alpha/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/alpha/Kconfig @@ -642,6 +642,12 @@ source "fs/Kconfig" source "arch/alpha/oprofile/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/alpha/Kconfig.debug" source "security/Kconfig" diff -puN arch/arm/Kconfig~linux-kernel-markers-kconfig-menus arch/arm/Kconfig --- a/arch/arm/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/arm/Kconfig @@ -1005,6 +1005,12 @@ source "fs/Kconfig" source "arch/arm/oprofile/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/arm/Kconfig.debug" source "security/Kconfig" diff -puN arch/arm26/Kconfig~linux-kernel-markers-kconfig-menus arch/arm26/Kconfig --- a/arch/arm26/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/arm26/Kconfig @@ -244,6 +244,12 @@ source "drivers/misc/Kconfig" source "drivers/usb/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/arm26/Kconfig.debug" source "security/Kconfig" diff -puN arch/cris/Kconfig~linux-kernel-markers-kconfig-menus arch/cris/Kconfig --- a/arch/cris/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/cris/Kconfig @@ -198,6 +198,12 @@ source "sound/Kconfig" source "drivers/usb/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/cris/Kconfig.debug" source "security/Kconfig" diff -puN arch/frv/Kconfig~linux-kernel-markers-kconfig-menus arch/frv/Kconfig --- a/arch/frv/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/frv/Kconfig @@ -379,6 +379,12 @@ source "drivers/Kconfig" source "fs/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/frv/Kconfig.debug" source "security/Kconfig" diff -puN arch/h8300/Kconfig~linux-kernel-markers-kconfig-menus arch/h8300/Kconfig --- a/arch/h8300/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/h8300/Kconfig @@ -216,6 +216,12 @@ endmenu source "fs/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/h8300/Kconfig.debug" source "security/Kconfig" diff -puN arch/i386/Kconfig~linux-kernel-markers-kconfig-menus arch/i386/Kconfig --- a/arch/i386/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/i386/Kconfig @@ -1260,6 +1260,9 @@ config KPROBES a probepoint and specifies the callback. Kprobes is useful for kernel debugging, non-intrusive instrumentation and testing. If in doubt, say "N". + +source "kernel/Kconfig.marker" + endmenu source "arch/i386/Kconfig.debug" diff -puN arch/ia64/Kconfig~linux-kernel-markers-kconfig-menus arch/ia64/Kconfig --- a/arch/ia64/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/ia64/Kconfig @@ -582,6 +582,9 @@ config KPROBES a probepoint and specifies the callback. Kprobes is useful for kernel debugging, non-intrusive instrumentation and testing. If in doubt, say "N". + +source "kernel/Kconfig.marker" + endmenu source "arch/ia64/Kconfig.debug" diff -puN arch/m32r/Kconfig~linux-kernel-markers-kconfig-menus arch/m32r/Kconfig --- a/arch/m32r/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/m32r/Kconfig @@ -401,6 +401,12 @@ source "fs/Kconfig" source "arch/m32r/oprofile/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/m32r/Kconfig.debug" source "security/Kconfig" diff -puN arch/m68k/Kconfig~linux-kernel-markers-kconfig-menus arch/m68k/Kconfig --- a/arch/m68k/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/m68k/Kconfig @@ -667,6 +667,12 @@ endmenu source "fs/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/m68k/Kconfig.debug" source "security/Kconfig" diff -puN arch/m68knommu/Kconfig~linux-kernel-markers-kconfig-menus arch/m68knommu/Kconfig --- a/arch/m68knommu/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/m68knommu/Kconfig @@ -676,6 +676,12 @@ source "drivers/Kconfig" source "fs/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/m68knommu/Kconfig.debug" source "security/Kconfig" diff -puN arch/mips/Kconfig~linux-kernel-markers-kconfig-menus arch/mips/Kconfig --- a/arch/mips/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/mips/Kconfig @@ -2145,6 +2145,12 @@ source "fs/Kconfig" source "arch/mips/oprofile/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/mips/Kconfig.debug" source "security/Kconfig" diff -puN arch/parisc/Kconfig~linux-kernel-markers-kconfig-menus arch/parisc/Kconfig --- a/arch/parisc/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/parisc/Kconfig @@ -269,6 +269,12 @@ source "fs/Kconfig" source "arch/parisc/oprofile/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/parisc/Kconfig.debug" source "security/Kconfig" diff -puN arch/powerpc/Kconfig~linux-kernel-markers-kconfig-menus arch/powerpc/Kconfig --- a/arch/powerpc/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/powerpc/Kconfig @@ -1246,6 +1246,9 @@ config KPROBES a probepoint and specifies the callback. Kprobes is useful for kernel debugging, non-intrusive instrumentation and testing. If in doubt, say "N". + +source "kernel/Kconfig.marker" + endmenu source "arch/powerpc/Kconfig.debug" diff -puN arch/ppc/Kconfig~linux-kernel-markers-kconfig-menus arch/ppc/Kconfig --- a/arch/ppc/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/ppc/Kconfig @@ -1451,8 +1451,14 @@ endmenu source "lib/Kconfig" +menu "Instrumentation Support" + source "arch/powerpc/oprofile/Kconfig" +source "kernel/Kconfig.marker" + +endmenu + source "arch/ppc/Kconfig.debug" source "security/Kconfig" diff -puN arch/s390/Kconfig~linux-kernel-markers-kconfig-menus arch/s390/Kconfig --- a/arch/s390/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/s390/Kconfig @@ -554,6 +554,8 @@ config KPROBES for kernel debugging, non-intrusive instrumentation and testing. If in doubt, say "N". +source "kernel/Kconfig.marker" + endmenu source "arch/s390/Kconfig.debug" diff -puN arch/sh/Kconfig~linux-kernel-markers-kconfig-menus arch/sh/Kconfig --- a/arch/sh/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/sh/Kconfig @@ -703,6 +703,12 @@ source "fs/Kconfig" source "arch/sh/oprofile/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/sh/Kconfig.debug" source "security/Kconfig" diff -puN arch/sh64/Kconfig~linux-kernel-markers-kconfig-menus arch/sh64/Kconfig --- a/arch/sh64/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/sh64/Kconfig @@ -281,6 +281,12 @@ source "fs/Kconfig" source "arch/sh64/oprofile/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/sh64/Kconfig.debug" source "security/Kconfig" diff -puN arch/sparc/Kconfig~linux-kernel-markers-kconfig-menus arch/sparc/Kconfig --- a/arch/sparc/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/sparc/Kconfig @@ -306,6 +306,8 @@ menu "Instrumentation Support" source "arch/sparc/oprofile/Kconfig" +source "kernel/Kconfig.marker" + endmenu source "arch/sparc/Kconfig.debug" diff -puN arch/sparc64/Kconfig~linux-kernel-markers-kconfig-menus arch/sparc64/Kconfig --- a/arch/sparc64/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/sparc64/Kconfig @@ -439,6 +439,9 @@ config KPROBES a probepoint and specifies the callback. Kprobes is useful for kernel debugging, non-intrusive instrumentation and testing. If in doubt, say "N". + +source "kernel/Kconfig.marker" + endmenu source "arch/sparc64/Kconfig.debug" diff -puN arch/um/Kconfig~linux-kernel-markers-kconfig-menus arch/um/Kconfig --- a/arch/um/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/um/Kconfig @@ -347,4 +347,10 @@ config INPUT bool default n +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/um/Kconfig.debug" diff -puN arch/v850/Kconfig~linux-kernel-markers-kconfig-menus arch/v850/Kconfig --- a/arch/v850/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/v850/Kconfig @@ -339,6 +339,12 @@ source "sound/Kconfig" source "drivers/usb/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/v850/Kconfig.debug" source "security/Kconfig" diff -puN arch/x86_64/Kconfig~linux-kernel-markers-kconfig-menus arch/x86_64/Kconfig --- a/arch/x86_64/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/x86_64/Kconfig @@ -755,6 +755,9 @@ config KPROBES a probepoint and specifies the callback. Kprobes is useful for kernel debugging, non-intrusive instrumentation and testing. If in doubt, say "N". + +source "kernel/Kconfig.marker" + endmenu source "arch/x86_64/Kconfig.debug" diff -puN arch/xtensa/Kconfig~linux-kernel-markers-kconfig-menus arch/xtensa/Kconfig --- a/arch/xtensa/Kconfig~linux-kernel-markers-kconfig-menus +++ a/arch/xtensa/Kconfig @@ -251,6 +251,12 @@ config EMBEDDED_RAMDISK_IMAGE provide one yourself. endmenu +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/xtensa/Kconfig.debug" source "security/Kconfig" diff -puN /dev/null kernel/Kconfig.marker --- /dev/null +++ a/kernel/Kconfig.marker @@ -0,0 +1,20 @@ +# Code markers configuration + +config MARKERS + bool "Activate markers" + depends on MODULES + help + Place an empty function call at each marker site. Can be + dynamically changed for a probe function. + +config MARKERS_DISABLE_OPTIMIZATION + bool "Disable marker optimization" + depends on MARKERS && EMBEDDED + default n + help + Disable code replacement jump optimisations. Especially useful if your + code is in a read-only rom/flash. + +config MARKERS_ENABLE_OPTIMIZATION + def_bool y + depends on MARKERS && !MARKERS_DISABLE_OPTIMIZATION diff -puN kernel/module.c~linux-kernel-markers-kconfig-menus kernel/module.c --- a/kernel/module.c~linux-kernel-markers-kconfig-menus +++ a/kernel/module.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include _