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