xref: /aosp_15_r20/external/libtracefs/Documentation/libtracefs-options.txt (revision 287e80b3a36113050663245e7f2c00d274188f18)
1*287e80b3SSadaf Ebrahimilibtracefs(3)
2*287e80b3SSadaf Ebrahimi=============
3*287e80b3SSadaf Ebrahimi
4*287e80b3SSadaf EbrahimiNAME
5*287e80b3SSadaf Ebrahimi----
6*287e80b3SSadaf Ebrahimitracefs_options - ftrace options, that can be controlled using tracefs library.
7*287e80b3SSadaf Ebrahimi
8*287e80b3SSadaf EbrahimiSYNOPSIS
9*287e80b3SSadaf Ebrahimi--------
10*287e80b3SSadaf Ebrahimi[verse]
11*287e80b3SSadaf Ebrahimi--
12*287e80b3SSadaf Ebrahimi*#include <tracefs.h>*
13*287e80b3SSadaf Ebrahimi
14*287e80b3SSadaf Ebrahimienum tracefs_option_id {
15*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_INVALID*,
16*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_ANNOTATE*,
17*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_BIN*,
18*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_BLK_CGNAME*,
19*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_BLK_CGROUP*,
20*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_BLK_CLASSIC*,
21*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_BLOCK*,
22*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_CONTEXT_INFO*,
23*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_DISABLE_ON_FREE*,
24*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_DISPLAY_GRAPH*,
25*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_EVENT_FORK*,
26*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FGRAPH_ABSTIME*,
27*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FGRAPH_CPU*,
28*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FGRAPH_DURATION*,
29*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FGRAPH_IRQS*,
30*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FGRAPH_OVERHEAD*,
31*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FGRAPH_OVERRUN*,
32*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FGRAPH_PROC*,
33*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FGRAPH_TAIL*,
34*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FUNC_STACKTRACE*,
35*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FUNCTION_FORK*,
36*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FUNCTION_TRACE*,
37*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_GRAPH_TIME*,
38*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_HEX*,
39*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_IRQ_INFO*,
40*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_LATENCY_FORMAT*,
41*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_MARKERS*,
42*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_OVERWRITE*,
43*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_PAUSE_ON_TRACE*,
44*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_PRINTK_MSG_ONLY*,
45*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_PRINT_PARENT*,
46*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_RAW*,
47*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_RECORD_CMD*,
48*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_RECORD_TGID*,
49*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_SLEEP_TIME*,
50*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_STACKTRACE*,
51*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_SYM_ADDR*,
52*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_SYM_OFFSET*,
53*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_SYM_USEROBJ*,
54*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_TRACE_PRINTK*,
55*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_USERSTACKTRACE*,
56*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_VERBOSE*,
57*287e80b3SSadaf Ebrahimi};
58*287e80b3SSadaf Ebrahimi--
59*287e80b3SSadaf Ebrahimi
60*287e80b3SSadaf EbrahimiDESCRIPTION
61*287e80b3SSadaf Ebrahimi-----------
62*287e80b3SSadaf EbrahimiThis enum contains all ftrace options, that can be manipulated using tracefs library. More detailed
63*287e80b3SSadaf Ebrahimiinformation about each option is available in Documentation/trace/ftrace.rst from the Linux
64*287e80b3SSadaf Ebrahimikernel tree, in the trace_options section. Note that some ftrace options cannot be manipulated by
65*287e80b3SSadaf Ebrahimithis library, as they are intended for internal, debug purposes. These options control the tracers
66*287e80b3SSadaf Ebrahimior the trace output. All options have two states - on and off, the default state is different for
67*287e80b3SSadaf Ebrahimieach of them.
68*287e80b3SSadaf Ebrahimi[verse]
69*287e80b3SSadaf Ebrahimi--
70*287e80b3SSadaf EbrahimiCommon options for all tracers:
71*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_INVALID* Not a valid ftrace option, used by the API to indicate an error.
72*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_ANNOTATE* Display when a new CPU buffer started.
73*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_BIN* Display the formats in raw binary.
74*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_CONTEXT_INFO* Show only the event data. Hides the comm, PID, timestamp, CPU, and other useful data.
75*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_BLOCK* When set, reading trace_pipe will not block when polled.
76*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_DISABLE_ON_FREE* When the free_buffer is closed, tracing will stop.
77*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_DISPLAY_GRAPH* When set, the latency tracers will use function graph tracing instead of function tracing.
78*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_EVENT_FORK* When set, tasks with PIDs listed in set_event_pid will have the PIDs of their children added to set_event_pid when those tasks fork.
79*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FUNCTION_FORK* When set, tasks with PIDs listed in set_ftrace_pid will have the PIDs of their children added to set_ftrace_pid when those tasks fork.
80*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FUNCTION_TRACE* When enabled, the latency tracers will trace functions.
81*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_HEX* Display numbers in a hexadecimal format.
82*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_IRQ_INFO* Display the interrupt, preempt count, need resched data.
83*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_LATENCY_FORMAT* Display additional information about the latency.
84*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_MARKERS* When set, the trace_marker is enabled - writable (only by root).
85*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_OVERWRITE* Controls what happens when the trace buffer is full. If set, the oldest events are discarded and overwritten. If disabled, then the newest events are discarded.
86*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_PAUSE_ON_TRACE* When set, opening the trace file for read, will pause writing to the ring buffer. When the file is closed, tracing will be enabled again.
87*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_PRINTK_MSG_ONLY* When set, trace_printk()s will only show the format and not their parameters.
88*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_PRINT_PARENT* On function traces, display the calling (parent) function as well as the function being traced.
89*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_RAW* Display raw numbers.
90*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_RECORD_CMD* Save a mapping with a pid and corresponding command.
91*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_RECORD_TGID* Save a mapping with a pid and corresponding Thread Group IDs.
92*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_STACKTRACE* Record a stack trace after any trace event.
93*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_SYM_ADDR* Display the function address as well as the function name.
94*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_SYM_OFFSET* Display not only the function name, but also the offset in the function.
95*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_SYM_USEROBJ* When *TRACEFS_OPTION_USERSTACKTRACE* is set, look up which object the address belongs to, and print the object and a relative address.
96*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_TRACE_PRINTK* Disable trace_printk() from writing into the buffer.
97*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_USERSTACKTRACE* Records a stack trace of the current user space thread after each trace event.
98*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_VERBOSE* When *TRACEFS_OPTION_LATENCY_FORMAT* is enabled, print more detailed information.
99*287e80b3SSadaf Ebrahimi
100*287e80b3SSadaf EbrahimiOptions, specific to function tracer:
101*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FUNC_STACKTRACE* Record a stack trace after every function.
102*287e80b3SSadaf Ebrahimi
103*287e80b3SSadaf EbrahimiOptions, specific to function_graph tracer:
104*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FGRAPH_ABSTIME* Display the timestamp at each line.
105*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FGRAPH_CPU* Display the CPU number of the CPU where the trace occurred.
106*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FGRAPH_DURATION* Display the duration of the amount of time at the end of each function, in microseconds.
107*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FGRAPH_IRQS* Trace functions that happen inside an interrupt.
108*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FGRAPH_OVERHEAD* Display a marker if a function takes longer than a certain amount of time.
109*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FGRAPH_OVERRUN* Display "overrun" of the call graph, in the case of functions missed due to big callstack.
110*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FGRAPH_PROC* Display the command of each process at every line.
111*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_FGRAPH_TAIL* Display the function name on its return.
112*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_SLEEP_TIME* Account time the task has been scheduled out as part of the function call.
113*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_GRAPH_TIME* Display the time to call nested functions, if function profiler is enabled.
114*287e80b3SSadaf Ebrahimi
115*287e80b3SSadaf EbrahimiOptions, specific to blk tracer:
116*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_BLK_CGNAME*
117*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_BLK_CGROUP*
118*287e80b3SSadaf Ebrahimi	*TRACEFS_OPTION_BLK_CLASSIC* Display a more minimalistic output.
119*287e80b3SSadaf Ebrahimi--
120*287e80b3SSadaf EbrahimiFILES
121*287e80b3SSadaf Ebrahimi-----
122*287e80b3SSadaf Ebrahimi[verse]
123*287e80b3SSadaf Ebrahimi--
124*287e80b3SSadaf Ebrahimi*tracefs.h*
125*287e80b3SSadaf Ebrahimi	Header file to include in order to have access to the library APIs.
126*287e80b3SSadaf Ebrahimi*-ltracefs*
127*287e80b3SSadaf Ebrahimi	Linker switch to add when building a program that uses the library.
128*287e80b3SSadaf Ebrahimi--
129*287e80b3SSadaf Ebrahimi
130*287e80b3SSadaf EbrahimiSEE ALSO
131*287e80b3SSadaf Ebrahimi--------
132*287e80b3SSadaf Ebrahimi*libtracefs*(3),
133*287e80b3SSadaf Ebrahimi*libtraceevent*(3),
134*287e80b3SSadaf Ebrahimi*trace-cmd*(1),
135*287e80b3SSadaf Ebrahimi_Documentation/trace/ftrace.rst_ from the Linux kernel tree.
136*287e80b3SSadaf Ebrahimi
137*287e80b3SSadaf EbrahimiAUTHOR
138*287e80b3SSadaf Ebrahimi------
139*287e80b3SSadaf Ebrahimi[verse]
140*287e80b3SSadaf Ebrahimi--
141*287e80b3SSadaf Ebrahimi*Steven Rostedt* <[email protected]>
142*287e80b3SSadaf Ebrahimi*Tzvetomir Stoyanov* <[email protected]>
143*287e80b3SSadaf Ebrahimi--
144*287e80b3SSadaf EbrahimiREPORTING BUGS
145*287e80b3SSadaf Ebrahimi--------------
146*287e80b3SSadaf EbrahimiReport bugs to  <[email protected]>
147*287e80b3SSadaf Ebrahimi
148*287e80b3SSadaf EbrahimiLICENSE
149*287e80b3SSadaf Ebrahimi-------
150*287e80b3SSadaf Ebrahimilibtracefs is Free Software licensed under the GNU LGPL 2.1
151*287e80b3SSadaf Ebrahimi
152*287e80b3SSadaf EbrahimiRESOURCES
153*287e80b3SSadaf Ebrahimi---------
154*287e80b3SSadaf Ebrahimihttps://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/
155*287e80b3SSadaf Ebrahimi
156*287e80b3SSadaf EbrahimiCOPYING
157*287e80b3SSadaf Ebrahimi-------
158*287e80b3SSadaf EbrahimiCopyright \(C) 2021 VMware, Inc. Free use of this software is granted under
159*287e80b3SSadaf Ebrahimithe terms of the GNU Public License (GPL).
160