|
Prev: QMC driver for MPC8272
Next: 2.6.18: hda_intel: azx_get_response timeout, switching to single_cmd mode...
From: Mathieu Desnoyers on 25 Sep 2006 11:20 Good morning everyone, Following Jeremy Fitzhardinge's advice, I rewrote my marker mechanism taking in consideration inline functions (and therefore also unrolled loops). This new marker version is a complete rewrite of the previous one. It allows : - Multiple occurrences of the same marker name. - Declaration of a marker in an inline function. - Declaration of a marker in an unrolled loop. - It _does not_ change the compiler optimisations. I just declare the markers in a separate section and allow duplicated entries. To set a probe on a marker, an iteration on all the markers is done. This marker mechanism is still portable : the non optimised version is a call to an empty function. Per architecture optimisations adds a near jump around the function call to that the call can be enabled or disabled by modifying the 1 byte offset of the jump. Architectures that do not use include/asm-generic/vmlinux.lds.h should define the marker section start/stop symbols. Comments are welcome, Mathieu ---BEGIN--- diff --git a/Makefile b/Makefile index 1700d3f..78ed30f 100644 --- a/Makefile +++ b/Makefile @@ -301,7 +301,8 @@ # Use LINUXINCLUDE when you must referen # Needed to be compatible with the O= option LINUXINCLUDE := -Iinclude \ $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \ - -include include/linux/autoconf.h + -include include/linux/autoconf.h \ + -include include/linux/marker.h CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE) diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index 213c785..95c1d1b 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig @@ -630,6 +630,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 --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 08b7cc9..4c03f09 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -871,6 +871,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 --git a/arch/arm26/Kconfig b/arch/arm26/Kconfig index cf4ebf4..f34e157 100644 --- a/arch/arm26/Kconfig +++ b/arch/arm26/Kconfig @@ -232,6 +232,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 --git a/arch/cris/Kconfig b/arch/cris/Kconfig index 856b665..84f8efd 100644 --- a/arch/cris/Kconfig +++ b/arch/cris/Kconfig @@ -179,6 +179,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 --git a/arch/frv/Kconfig b/arch/frv/Kconfig index 95a3892..8708a75 100644 --- a/arch/frv/Kconfig +++ b/arch/frv/Kconfig @@ -345,6 +345,12 @@ source "drivers/Kconfig" source "fs/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/frv/Kconfig.debug" source "security/Kconfig" diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig index cabf0bf..bdb67ed 100644 --- a/arch/h8300/Kconfig +++ b/arch/h8300/Kconfig @@ -197,6 +197,12 @@ endmenu source "fs/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/h8300/Kconfig.debug" source "security/Kconfig" diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig index 8dfa305..e6cc7da 100644 --- a/arch/i386/Kconfig +++ b/arch/i386/Kconfig @@ -1081,6 +1081,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 --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 0f3076a..2342975 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig @@ -499,6 +499,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 --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig index 41fd490..50f0a8e 100644 --- a/arch/m32r/Kconfig +++ b/arch/m32r/Kconfig @@ -386,6 +386,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 --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig index 805b81f..5af9e00 100644 --- a/arch/m68k/Kconfig +++ b/arch/m68k/Kconfig @@ -652,6 +652,12 @@ endmenu source "fs/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/m68k/Kconfig.debug" source "security/Kconfig" diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig index 3cde682..bd01cc0 100644 --- a/arch/m68knommu/Kconfig +++ b/arch/m68knommu/Kconfig @@ -652,6 +652,12 @@ source "drivers/Kconfig" source "fs/Kconfig" +menu "Instrumentation Support" + +source "kernel/Kconfig.marker" + +endmenu + source "arch/m68knommu/Kconfig.debug" source "security/Kconfig" diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index e8ff09f..4d5dbf9 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -1850,6 +1850,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 --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index 910fb3a..a0a7dd7 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig @@ -251,6 +251,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 --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 6729c98..44f25b5 1 |