[PATCH 11/11] LTTng-core 0.5.111 : Relay+DebugFS
From: Mathieu Desnoyers
Date: Sat Sep 16 2006 - 03:58:31 EST
11 - LTTng menu options and Makefiles
patch-2.6.17-lttng-core-0.5.111-build.diff
OpenPGP public key: http://krystal.dyndns.org:8080/key/compudj.gpg
Key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,9 @@
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 17
-EXTRAVERSION =
+EXTRAVERSION =-lttng-0.5.111-core
NAME=Crazed Snow-Weasel
+NAME=Sliding Snow Leopard
# *DOCUMENTATION*
# To see a list of typical targets execute "make help"
@@ -518,7 +519,7 @@ export MODLIB
ifeq ($(KBUILD_EXTMOD),)
-core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/
+core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ ltt/
vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
$(core-y) $(core-m) $(drivers-y) $(drivers-m) \
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -25,6 +25,10 @@ obj-$(CONFIG_KALLSYMS) += kallsyms.o
obj-$(CONFIG_PM) += power/
obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o
obj-$(CONFIG_KEXEC) += kexec.o
+obj-$(CONFIG_LTT) += ltt-base.o
+obj-$(CONFIG_LTT) += ltt-facilities.o
+obj-$(CONFIG_LTT_USERSPACE_GENERIC) += ltt-syscall.o
+obj-$(CONFIG_LTT_HEARTBEAT) += ltt-heartbeat.o
obj-$(CONFIG_COMPAT) += compat.o
obj-$(CONFIG_CPUSETS) += cpuset.o
obj-$(CONFIG_IKCONFIG) += configs.o
@@ -61,3 +65,4 @@ quiet_cmd_ikconfiggz = IKCFG $@
targets += config_data.h
$(obj)/config_data.h: $(obj)/config_data.gz FORCE
$(call if_changed,ikconfiggz)
+
--- /dev/null
+++ b/ltt/Kconfig
@@ -0,0 +1,133 @@
+config LTT
+ bool "Linux Trace Toolkit Instrumentation Support"
+ select LTT_FACILITY_CORE
+ depends on EXPERIMENTAL
+ select LTT_HEARTBEAT if MIPS
+ select LTT_SYNTHETIC_TSC if MIPS
+ default n
+ help
+ It is possible for the kernel to log important events to a trace
+ facility. Doing so, enables the use of the generated traces in order
+ to reconstruct the dynamic behavior of the kernel, and hence the
+ whole system.
+
+ The tracing process contains 4 parts :
+ 1) The logging of events by key parts of the kernel.
+ 2) The tracer that keeps the events in a data buffer (uses
+ relayfs).
+ 3) A trace daemon that interacts with the tracer and is
+ notified every time there is a certain quantity of data to
+ read from the tracer.
+ 4) A trace event data decoder that reads the accumulated data
+ and formats it in a human-readable format.
+
+ If you say Y, the first component will be built into the kernel.
+
+ For more information on kernel tracing, the trace daemon or the event
+ decoder, please check the following address :
+ http://www.opersys.com/ltt
+ See also the experimental page of the project :
+ http://ltt.polymtl.ca
+
+config LTT_TRACER
+ tristate "Linux Trace Toolkit Tracer"
+ depends on LTT
+ default y
+ help
+ If you enable this option, the Linux Trace Toolkit Tracer will be
+ either built in the kernel or as module.
+
+ Critical parts of the kernel will call upon the kernel tracing
+ function. The data is then recorded by the tracer if a trace daemon
+ is running in user-space and has issued a "start" command.
+
+ For more information on kernel tracing, the trace daemon or the event
+ decoder, please check the following address :
+ http://www.opersys.com/ltt
+ See also the experimental page of the project :
+ http://ltt.polymtl.ca
+
+config LTT_RELAY
+ tristate "Linux Trace Toolkit Relay+DebugFS Support"
+ select RELAY
+ select DEBUG_FS
+ depends on LTT
+ depends on LTT_TRACER
+ default y
+ help
+ Support using relay and debugfs to log the data obtained through LTT.
+
+ If you don't have special hardware, you almost certainly want
+ to say Y here.
+
+config LTT_ALIGNMENT
+ bool "Align Linux Trace Toolkit Traces"
+ depends on LTT
+ default y
+ help
+ This option enables dynamic alignment of data in buffers. The
+ alignment is made on the smallest size between architecture size
+ and the size of the value to be written.
+
+ Dynamically calculating the offset of the data has a performance cost,
+ but it is more efficient on some architectures (especially 64 bits) to
+ align data than to write it unaligned.
+
+config LTT_HEARTBEAT
+ bool "Activate Linux Trace Toolkit Heartbeat Timer"
+ depends on LTT
+ default n
+ help
+ The Linux Trace Toolkit Heartbeat Timer fires at an interval small
+ enough to guarantee that the 32 bits truncated TSC won't overflow
+ between two timer execution.
+
+config LTT_HEARTBEAT_EVENT
+ bool "Write heartbeat event to shrink traces"
+ depends on LTT_HEARTBEAT
+ default y
+ help
+ This option makes the heartbeat timer write an event in each tracefile
+ at an interval that is one tenth of the time it takes to overflow 32
+ bits at your CPU frequency.
+
+ If this option is not enabled, 64 bits fields must be used in each
+ event header to save the full TSC : it can make traces about 1/10
+ bigger. It is suggested that you enable this option to make more
+ compact traces.
+
+config LTT_SYNTHETIC_TSC
+ bool "Keep a synthetic cpu timestamp counter"
+ depends on LTT_HEARTBEAT
+ default n
+ help
+ This option is only useful on archtecture lacking a 64 bits timestamp
+ counter : it generates a "synthetic" 64 bits timestamp by updating
+ the 32 MSB at each heartbeat atomically. See kernel/ltt-heartbeat.c
+ for details.
+
+config LTT_USERSPACE_GENERIC
+ bool "Allow tracing from userspace"
+ depends on LTT
+ default y
+ help
+ This options allows processes to trace through the ltt_trace_generic
+ system call after they have registered their facilities with
+ ltt_register_generic.
+
+config LTT_NETLINK_CONTROL
+ tristate "Linux Trace Toolkit Netlink Controller"
+ depends on LTT_TRACER
+ default m
+ help
+ If you enable this option, the Linux Trace Toolkit Netlink Controller
+ will be either built in the kernel of as module.
+
+config LTT_FACILITY_CORE
+ bool "Linux Trace Toolkit Core Facility"
+ depends on LTT
+ default y
+ help
+ LTT core facility. Contains event definition for facility load/unload
+ and heartbeat.
+
--- /dev/null
+++ b/ltt/Makefile
@@ -0,0 +1,8 @@
+#
+# Makefile for the LTT objects.
+#
+obj-$(CONFIG_LTT_FACILITY_CORE) += ltt-facility-loader-core.o
+
+obj-$(CONFIG_LTT_TRACER) += ltt-core.o
+obj-$(CONFIG_LTT_RELAY) += ltt-relay.o
+obj-$(CONFIG_LTT_NETLINK_CONTROL) += ltt-control.o
--- 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 "ltt/Kconfig"
+
endmenu
source "arch/i386/Kconfig.debug"
--- a/arch/ppc/Kconfig
+++ b/arch/ppc/Kconfig
@@ -1417,3 +1417,9 @@ source "arch/ppc/Kconfig.debug"
source "security/Kconfig"
source "crypto/Kconfig"
+
+menu "Instrumentation Support"
+
+source "ltt/Kconfig"
+
+endmenu
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -1011,6 +1011,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 "ltt/Kconfig"
+
endmenu
source "arch/powerpc/Kconfig.debug"
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -871,6 +871,12 @@ source "fs/Kconfig"
source "arch/arm/oprofile/Kconfig"
+menu "Instrumentation Support"
+
+source "ltt/Kconfig"
+
+endmenu
+
source "arch/arm/Kconfig.debug"
source "security/Kconfig"
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1857,3 +1857,9 @@ source "security/Kconfig"
source "crypto/Kconfig"
source "lib/Kconfig"
+
+menu "Instrumentation Support"
+
+source "ltt/Kconfig"
+
+endmenu
--- a/arch/x86_64/Kconfig
+++ b/arch/x86_64/Kconfig
@@ -611,6 +611,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 "ltt/Kconfig"
+
endmenu
source "arch/x86_64/Kconfig.debug"