]> pilppa.org Git - linux-2.6-omap-h63xx.git/blob - kernel/trace/Kconfig
ftrace: fix depends
[linux-2.6-omap-h63xx.git] / kernel / trace / Kconfig
1 #
2 # Architectures that offer an FTRACE implementation should select HAVE_FTRACE:
3 #
4
5 config NOP_TRACER
6         bool
7
8 config HAVE_FTRACE
9         bool
10         select NOP_TRACER
11
12 config HAVE_DYNAMIC_FTRACE
13         bool
14
15 config HAVE_FTRACE_MCOUNT_RECORD
16         bool
17
18 config TRACER_MAX_TRACE
19         bool
20
21 config RING_BUFFER
22         bool
23
24 config TRACING
25         bool
26         select DEBUG_FS
27         select RING_BUFFER
28         select STACKTRACE
29         select TRACEPOINTS
30
31 config FTRACE
32         bool "Kernel Function Tracer"
33         depends on HAVE_FTRACE
34         depends on DEBUG_KERNEL
35         select FRAME_POINTER
36         select TRACING
37         select CONTEXT_SWITCH_TRACER
38         help
39           Enable the kernel to trace every kernel function. This is done
40           by using a compiler feature to insert a small, 5-byte No-Operation
41           instruction to the beginning of every kernel function, which NOP
42           sequence is then dynamically patched into a tracer call when
43           tracing is enabled by the administrator. If it's runtime disabled
44           (the bootup default), then the overhead of the instructions is very
45           small and not measurable even in micro-benchmarks.
46
47 config IRQSOFF_TRACER
48         bool "Interrupts-off Latency Tracer"
49         default n
50         depends on TRACE_IRQFLAGS_SUPPORT
51         depends on GENERIC_TIME
52         depends on DEBUG_KERNEL
53         select TRACE_IRQFLAGS
54         select TRACING
55         select TRACER_MAX_TRACE
56         help
57           This option measures the time spent in irqs-off critical
58           sections, with microsecond accuracy.
59
60           The default measurement method is a maximum search, which is
61           disabled by default and can be runtime (re-)started
62           via:
63
64               echo 0 > /debugfs/tracing/tracing_max_latency
65
66           (Note that kernel size and overhead increases with this option
67           enabled. This option and the preempt-off timing option can be
68           used together or separately.)
69
70 config PREEMPT_TRACER
71         bool "Preemption-off Latency Tracer"
72         default n
73         depends on GENERIC_TIME
74         depends on PREEMPT
75         depends on DEBUG_KERNEL
76         select TRACING
77         select TRACER_MAX_TRACE
78         help
79           This option measures the time spent in preemption off critical
80           sections, with microsecond accuracy.
81
82           The default measurement method is a maximum search, which is
83           disabled by default and can be runtime (re-)started
84           via:
85
86               echo 0 > /debugfs/tracing/tracing_max_latency
87
88           (Note that kernel size and overhead increases with this option
89           enabled. This option and the irqs-off timing option can be
90           used together or separately.)
91
92 config SYSPROF_TRACER
93         bool "Sysprof Tracer"
94         depends on X86
95         select TRACING
96         help
97           This tracer provides the trace needed by the 'Sysprof' userspace
98           tool.
99
100 config SCHED_TRACER
101         bool "Scheduling Latency Tracer"
102         depends on DEBUG_KERNEL
103         select TRACING
104         select CONTEXT_SWITCH_TRACER
105         select TRACER_MAX_TRACE
106         help
107           This tracer tracks the latency of the highest priority task
108           to be scheduled in, starting from the point it has woken up.
109
110 config CONTEXT_SWITCH_TRACER
111         bool "Trace process context switches"
112         depends on DEBUG_KERNEL
113         select TRACING
114         select MARKERS
115         help
116           This tracer gets called from the context switch and records
117           all switching of tasks.
118
119 config BOOT_TRACER
120         bool "Trace boot initcalls"
121         depends on DEBUG_KERNEL
122         select TRACING
123         help
124           This tracer helps developers to optimize boot times: it records
125           the timings of the initcalls and traces key events and the identity
126           of tasks that can cause boot delays, such as context-switches.
127
128           Its aim is to be parsed by the /scripts/bootgraph.pl tool to
129           produce pretty graphics about boot inefficiencies, giving a visual
130           representation of the delays during initcalls - but the raw
131           /debug/tracing/trace text output is readable too.
132
133           ( Note that tracing self tests can't be enabled if this tracer is
134             selected, because the self-tests are an initcall as well and that
135             would invalidate the boot trace. )
136
137 config STACK_TRACER
138         bool "Trace max stack"
139         depends on HAVE_FTRACE
140         depends on DEBUG_KERNEL
141         select FTRACE
142         select STACKTRACE
143         help
144           This special tracer records the maximum stack footprint of the
145           kernel and displays it in debugfs/tracing/stack_trace.
146
147           This tracer works by hooking into every function call that the
148           kernel executes, and keeping a maximum stack depth value and
149           stack-trace saved. Because this logic has to execute in every
150           kernel function, all the time, this option can slow down the
151           kernel measurably and is generally intended for kernel
152           developers only.
153
154           Say N if unsure.
155
156 config DYNAMIC_FTRACE
157         bool "enable/disable ftrace tracepoints dynamically"
158         depends on FTRACE
159         depends on HAVE_DYNAMIC_FTRACE
160         depends on DEBUG_KERNEL
161         default y
162         help
163          This option will modify all the calls to ftrace dynamically
164          (will patch them out of the binary image and replaces them
165          with a No-Op instruction) as they are called. A table is
166          created to dynamically enable them again.
167
168          This way a CONFIG_FTRACE kernel is slightly larger, but otherwise
169          has native performance as long as no tracing is active.
170
171          The changes to the code are done by a kernel thread that
172          wakes up once a second and checks to see if any ftrace calls
173          were made. If so, it runs stop_machine (stops all CPUS)
174          and modifies the code to jump over the call to ftrace.
175
176 config FTRACE_MCOUNT_RECORD
177         def_bool y
178         depends on DYNAMIC_FTRACE
179         depends on HAVE_FTRACE_MCOUNT_RECORD
180
181 config FTRACE_SELFTEST
182         bool
183
184 config FTRACE_STARTUP_TEST
185         bool "Perform a startup test on ftrace"
186         depends on TRACING && DEBUG_KERNEL && !BOOT_TRACER
187         select FTRACE_SELFTEST
188         help
189           This option performs a series of startup tests on ftrace. On bootup
190           a series of tests are made to verify that the tracer is
191           functioning properly. It will do tests on all the configured
192           tracers of ftrace.