|
@@ -429,24 +429,28 @@ config PROBE_EVENTS
|
|
|
def_bool n
|
|
|
|
|
|
config DYNAMIC_FTRACE
|
|
|
- bool "enable/disable ftrace tracepoints dynamically"
|
|
|
+ bool "enable/disable function tracing dynamically"
|
|
|
depends on FUNCTION_TRACER
|
|
|
depends on HAVE_DYNAMIC_FTRACE
|
|
|
default y
|
|
|
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
|
|
|
- created to dynamically enable them again.
|
|
|
+ This option will modify all the calls to function tracing
|
|
|
+ dynamically (will patch them out of the binary image and
|
|
|
+ replace them with a No-Op instruction) on boot up. During
|
|
|
+ compile time, a table is made of all the locations that ftrace
|
|
|
+ can function trace, and this table is linked into the kernel
|
|
|
+ image. When this is enabled, functions can be individually
|
|
|
+ enabled, and the functions not enabled will not affect
|
|
|
+ performance of the system.
|
|
|
+
|
|
|
+ See the files in /sys/kernel/debug/tracing:
|
|
|
+ available_filter_functions
|
|
|
+ set_ftrace_filter
|
|
|
+ set_ftrace_notrace
|
|
|
|
|
|
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
|
|
|
- were made. If so, it runs stop_machine (stops all CPUS)
|
|
|
- and modifies the code to jump over the call to ftrace.
|
|
|
-
|
|
|
config DYNAMIC_FTRACE_WITH_REGS
|
|
|
def_bool y
|
|
|
depends on DYNAMIC_FTRACE
|