[PATCHv11 2.6.36-rc2-tip 10/15] 10: tracing: config option to enable both kprobe-tracer and uprobe-tracer.

From: Srikar Dronamraju
Date: Wed Aug 25 2010 - 09:48:29 EST



Selecting CONFIG_PROBE_EVENTS enables both kprobe-based and
uprobes-based dynamic events. However kprobe-tracer or uprobe-tracer
can still be individually selected or disabled.

Signed-off-by: Srikar Dronamraju <srikar@xxxxxxxxxxxxxxxxxx>
Suggested-by: Frederic Weisbecker <fweisbec@xxxxxxxxx>
---
kernel/trace/Kconfig | 51 +++++++++++++++++++++++++++++---------------------
1 files changed, 30 insertions(+), 21 deletions(-)

diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index 55ba474..205c12b 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -76,7 +76,7 @@ config RING_BUFFER_ALLOW_SWAP
# All tracer options should select GENERIC_TRACER. For those options that are
# enabled by all tracers (context switch and event tracer) they select TRACING.
# This allows those options to appear when no other tracer is selected. But the
-# options do not appear when something else selects it. We need the two options
+# options do not appear when something else selects it. We need the two option
# GENERIC_TRACER and TRACING to avoid circular dependencies to accomplish the
# hiding of the automatic options.

@@ -162,7 +162,7 @@ config IRQSOFF_TRACER
This option measures the time spent in irqs-off critical
sections, with microsecond accuracy.

- The default measurement method is a maximum search, which is
+ The default measurement method is a maximum search, which i
disabled by default and can be runtime (re-)started
via:

@@ -184,7 +184,7 @@ config PREEMPT_TRACER
This option measures the time spent in preemption-off critical
sections, with microsecond accuracy.

- The default measurement method is a maximum search, which is
+ The default measurement method is a maximum search, which i
disabled by default and can be runtime (re-)started
via:

@@ -228,7 +228,7 @@ choice
prompt "Branch Profiling"
default BRANCH_PROFILE_NONE
help
- The branch profiling is a software profiler. It will add hooks
+ The branch profiling is a software profiler. It will add hook
into the C conditionals to test which path a branch takes.

The likely/unlikely profiler only looks at the conditions that
@@ -252,12 +252,12 @@ config PROFILE_ANNOTATED_BRANCHES
bool "Trace likely/unlikely profiler"
select TRACE_BRANCH_PROFILING
help
- This tracer profiles all the the likely and unlikely macros
+ This tracer profiles all the the likely and unlikely macro
in the kernel. It will display the results in:

/sys/kernel/debug/tracing/profile_annotated_branch

- Note: this will add a significant overhead; only turn this
+ Note: this will add a significant overhead; only turn thi
on if you need to profile the system's use of these macros.

config PROFILE_ALL_BRANCHES
@@ -333,7 +333,7 @@ config BLK_DEV_IO_TRACE
select GENERIC_TRACER
select STACKTRACE
help
- Say Y here if you want to be able to trace the block layer actions
+ Say Y here if you want to be able to trace the block layer action
on a given queue. Tracing allows you to see any traffic happening
on a block device queue. For more information (and the userspace
support tools needed), fetch the blktrace tools from:
@@ -351,9 +351,8 @@ config BLK_DEV_IO_TRACE
config KPROBE_EVENT
depends on KPROBES
depends on HAVE_REGS_AND_STACK_ACCESS_API
+ depends on PROBE_EVENTS
bool "Enable kprobes-based dynamic events"
- select TRACING
- select PROBE_EVENTS
default y
help
This allows the user to add tracing events (similar to tracepoints)
@@ -370,10 +369,9 @@ config UPROBE_EVENT
bool "Enable uprobes-based dynamic events"
depends on ARCH_SUPPORTS_UPROBES
depends on MMU
+ depends on PROBE_EVENTS
select UPROBES
- select PROBE_EVENTS
- select TRACING
- default n
+ default y
help
This allows the user to add tracing events on top of userspace dynamic
events (similar to tracepoints) on the fly via the traceevents interface.
@@ -383,7 +381,18 @@ config UPROBE_EVENT
tools on user space applications.

config PROBE_EVENTS
- def_bool n
+ bool "Enable kprobes and uprobe based dynamic events"
+ select TRACING
+ default n
+ help
+ This allows a user to add dynamic tracing events in
+ kernel using kprobe-tracer and in userspace using
+ uprobe-tracer. However users can still selectively
+ disable one of these events.
+
+ For more information on kprobe-tracer and uprobe-tracer
+ please refer help under KPROBE_EVENT and UPROBE_EVENT
+ respectively.

config DYNAMIC_FTRACE
bool "enable/disable ftrace tracepoints dynamically"
@@ -393,14 +402,14 @@ config DYNAMIC_FTRACE
help
This option will modify all the calls to ftrace dynamically
(will patch them out of the binary image and replace them
- with a No-Op instruction) as they are called. A table is
+ with a No-Op instruction) as they are called. A table i
created to dynamically enable them again.

This way a CONFIG_FUNCTION_TRACER kernel is slightly larger, but
otherwise has native performance as long as no tracing is active.

The changes to the code are done by a kernel thread that
- wakes up once a second and checks to see if any ftrace calls
+ wakes up once a second and checks to see if any ftrace call
were made. If so, it runs stop_machine (stops all CPUS)
and modifies the code to jump over the call to ftrace.

@@ -432,7 +441,7 @@ config FTRACE_STARTUP_TEST
select FTRACE_SELFTEST
help
This option performs a series of startup tests on ftrace. On bootup
- a series of tests are made to verify that the tracer is
+ a series of tests are made to verify that the tracer i
functioning properly. It will do tests on all the configured
tracers of ftrace.

@@ -441,12 +450,12 @@ config EVENT_TRACE_TEST_SYSCALLS
depends on FTRACE_STARTUP_TEST
help
This option will also enable testing every syscall event.
- It only enables the event and disables it and runs various loads
+ It only enables the event and disables it and runs various load
with the event enabled. This adds a bit more time for kernel boot
up since it runs this on every system call defined.

TBD - enable a way to actually call the syscalls as we test their
- events
+ event

config MMIOTRACE
bool "Memory mapped IO tracing"
@@ -465,7 +474,7 @@ config MMIOTRACE_TEST
tristate "Test module for mmiotrace"
depends on MMIOTRACE && m
help
- This is a dumb module for testing mmiotrace. It is very dangerous
+ This is a dumb module for testing mmiotrace. It is very dangerou
as it will write garbage to IO memory starting at a given address.
However, it should be safe to use on e.g. unused portion of VRAM.

@@ -477,9 +486,9 @@ config RING_BUFFER_BENCHMARK
help
This option creates a test to stress the ring buffer and benchmark it.
It creates its own ring buffer such that it will not interfere with
- any other users of the ring buffer (such as ftrace). It then creates
+ any other users of the ring buffer (such as ftrace). It then create
a producer and consumer that will run for 10 seconds and sleep for
- 10 seconds. Each interval it will print out the number of events
+ 10 seconds. Each interval it will print out the number of event
it recorded and give a rough estimate of how long each iteration took.

It does not disable interrupts or raise its priority, so it may be
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/