xref: /aosp_15_r20/external/trace-cmd/tracecmd/trace-usage.c (revision 58e6ee5f017f6a8912852c892d18457e4bafb554)
1*58e6ee5fSAndroid Build Coastguard Worker // SPDX-License-Identifier: GPL-2.0
2*58e6ee5fSAndroid Build Coastguard Worker #include <stdio.h>
3*58e6ee5fSAndroid Build Coastguard Worker #include <stdlib.h>
4*58e6ee5fSAndroid Build Coastguard Worker #include <string.h>
5*58e6ee5fSAndroid Build Coastguard Worker #include <libgen.h>
6*58e6ee5fSAndroid Build Coastguard Worker 
7*58e6ee5fSAndroid Build Coastguard Worker #include "trace-local.h"
8*58e6ee5fSAndroid Build Coastguard Worker #include "version.h"
9*58e6ee5fSAndroid Build Coastguard Worker 
10*58e6ee5fSAndroid Build Coastguard Worker struct usage_help {
11*58e6ee5fSAndroid Build Coastguard Worker 	char *name;
12*58e6ee5fSAndroid Build Coastguard Worker 	char *short_help;
13*58e6ee5fSAndroid Build Coastguard Worker 	char *long_help;
14*58e6ee5fSAndroid Build Coastguard Worker };
15*58e6ee5fSAndroid Build Coastguard Worker 
16*58e6ee5fSAndroid Build Coastguard Worker static struct usage_help usage_help[] = {
17*58e6ee5fSAndroid Build Coastguard Worker 	{
18*58e6ee5fSAndroid Build Coastguard Worker 		"record",
19*58e6ee5fSAndroid Build Coastguard Worker 		"record a trace into a trace.dat file",
20*58e6ee5fSAndroid Build Coastguard Worker 		" %s record [-v][-e event [-f filter]][-p plugin][-F][-d][-D][-o file] \\\n"
21*58e6ee5fSAndroid Build Coastguard Worker 		"           [-q][-s usecs][-O option ][-l func][-g func][-n func] \\\n"
22*58e6ee5fSAndroid Build Coastguard Worker 		"           [-P pid][-N host:port][-t][-r prio][-b size][-B buf][command ...]\n"
23*58e6ee5fSAndroid Build Coastguard Worker 		"           [-m max][-C clock]\n"
24*58e6ee5fSAndroid Build Coastguard Worker 		"          -e run command with event enabled\n"
25*58e6ee5fSAndroid Build Coastguard Worker 		"          -f filter for previous -e event\n"
26*58e6ee5fSAndroid Build Coastguard Worker 		"          -R trigger for previous -e event\n"
27*58e6ee5fSAndroid Build Coastguard Worker 		"          -p run command with plugin enabled\n"
28*58e6ee5fSAndroid Build Coastguard Worker 		"          -F filter only on the given process\n"
29*58e6ee5fSAndroid Build Coastguard Worker 		"          -P trace the given pid like -F for the command\n"
30*58e6ee5fSAndroid Build Coastguard Worker 		"          -c also trace the children of -F (or -P if kernel supports it)\n"
31*58e6ee5fSAndroid Build Coastguard Worker 		"          -C set the trace clock\n"
32*58e6ee5fSAndroid Build Coastguard Worker 		"          -T do a stacktrace on all events\n"
33*58e6ee5fSAndroid Build Coastguard Worker 		"          -l filter function name\n"
34*58e6ee5fSAndroid Build Coastguard Worker 		"          -g set graph function\n"
35*58e6ee5fSAndroid Build Coastguard Worker 		"          -n do not trace function\n"
36*58e6ee5fSAndroid Build Coastguard Worker 		"          -m max size per CPU in kilobytes\n"
37*58e6ee5fSAndroid Build Coastguard Worker 		"          -M set CPU mask to trace\n"
38*58e6ee5fSAndroid Build Coastguard Worker 		"          -v will negate all -e (disable those events) and -B (delete those instances) after it\n"
39*58e6ee5fSAndroid Build Coastguard Worker 		"          -d disable function tracer when running\n"
40*58e6ee5fSAndroid Build Coastguard Worker 		"          -D Full disable of function tracing (for all users)\n"
41*58e6ee5fSAndroid Build Coastguard Worker 		"          -o data output file [default trace.dat]\n"
42*58e6ee5fSAndroid Build Coastguard Worker 		"          -O option to enable (or disable)\n"
43*58e6ee5fSAndroid Build Coastguard Worker 		"          -r real time priority to run the capture threads\n"
44*58e6ee5fSAndroid Build Coastguard Worker 		"          -s sleep interval between recording (in usecs) [default: 1000]\n"
45*58e6ee5fSAndroid Build Coastguard Worker 		"          -S used with --profile, to enable only events in command line\n"
46*58e6ee5fSAndroid Build Coastguard Worker 		"          -N host:port to connect to (see listen)\n"
47*58e6ee5fSAndroid Build Coastguard Worker 		"          -V cid:port to connect to via vsocket (see listen)\n"
48*58e6ee5fSAndroid Build Coastguard Worker 		"          -t used with -N, forces use of tcp in live trace\n"
49*58e6ee5fSAndroid Build Coastguard Worker 		"          -b change kernel buffersize (in kilobytes per CPU)\n"
50*58e6ee5fSAndroid Build Coastguard Worker 		"          -B create sub buffer and following events will be enabled here\n"
51*58e6ee5fSAndroid Build Coastguard Worker 		"          -k do not reset the buffers after tracing.\n"
52*58e6ee5fSAndroid Build Coastguard Worker 		"          -i do not fail if an event is not found\n"
53*58e6ee5fSAndroid Build Coastguard Worker 		"          -q print no output to the screen\n"
54*58e6ee5fSAndroid Build Coastguard Worker 		"          -G when profiling, set soft and hard irqs as global\n"
55*58e6ee5fSAndroid Build Coastguard Worker 		"          --quiet print no output to the screen\n"
56*58e6ee5fSAndroid Build Coastguard Worker 		"          --module filter module name\n"
57*58e6ee5fSAndroid Build Coastguard Worker 		"          --by-comm used with --profile, merge events for related comms\n"
58*58e6ee5fSAndroid Build Coastguard Worker 		"          --profile enable tracing options needed for report --profile\n"
59*58e6ee5fSAndroid Build Coastguard Worker 		"          --func-stack perform a stack trace for function tracer\n"
60*58e6ee5fSAndroid Build Coastguard Worker 		"             (use with caution)\n"
61*58e6ee5fSAndroid Build Coastguard Worker 		"          --max-graph-depth limit function_graph depth\n"
62*58e6ee5fSAndroid Build Coastguard Worker 		"          --cmdlines-size change kernel saved_cmdlines_size\n"
63*58e6ee5fSAndroid Build Coastguard Worker 		"          --no-filter include trace-cmd threads in the trace\n"
64*58e6ee5fSAndroid Build Coastguard Worker 		"          --proc-map save the traced processes address map into the trace.dat file\n"
65*58e6ee5fSAndroid Build Coastguard Worker 		"          --user execute the specified [command ...] as given user\n"
66*58e6ee5fSAndroid Build Coastguard Worker 		"          --tsc2nsec Convert the current clock to nanoseconds, using tsc multiplier and shift from the Linux"
67*58e6ee5fSAndroid Build Coastguard Worker 		"               kernel's perf interface\n"
68*58e6ee5fSAndroid Build Coastguard Worker 		"          --tsync-interval set the loop interval, in ms, for timestamps synchronization with guests:"
69*58e6ee5fSAndroid Build Coastguard Worker 		"               If a negative number is specified, timestamps synchronization is disabled"
70*58e6ee5fSAndroid Build Coastguard Worker 		"               If 0 is specified, no loop is performed - timestamps offset is calculated only twice,"
71*58e6ee5fSAndroid Build Coastguard Worker 		"                                                         at the beginnig and at the end of the trace\n"
72*58e6ee5fSAndroid Build Coastguard Worker 		"          --poll don't block while reading from the trace buffer\n"
73*58e6ee5fSAndroid Build Coastguard Worker 		"          --name used with -A to give the agent a specific name\n"
74*58e6ee5fSAndroid Build Coastguard Worker 		"          --file-version set the desired trace file version\n"
75*58e6ee5fSAndroid Build Coastguard Worker 		"          --compression compress the trace output file, one of these strings can be passed:\n"
76*58e6ee5fSAndroid Build Coastguard Worker 		"                            any  - auto select the best available compression algorithm\n"
77*58e6ee5fSAndroid Build Coastguard Worker 		"                            none - do not compress the trace file\n"
78*58e6ee5fSAndroid Build Coastguard Worker 		"                            name - the name of the desired compression algorithms\n"
79*58e6ee5fSAndroid Build Coastguard Worker 		"                        available algorithms can be listed with trace-cmd list -c\n"
80*58e6ee5fSAndroid Build Coastguard Worker 	},
81*58e6ee5fSAndroid Build Coastguard Worker 	{
82*58e6ee5fSAndroid Build Coastguard Worker 		"set",
83*58e6ee5fSAndroid Build Coastguard Worker 		"set a ftrace configuration parameter",
84*58e6ee5fSAndroid Build Coastguard Worker 		" %s set [-v][-e event [-f filter]][-p plugin][-F][-d][-D] \\\n"
85*58e6ee5fSAndroid Build Coastguard Worker 		"           [-q][-s usecs][-O option ][-l func][-g func][-n func] \\\n"
86*58e6ee5fSAndroid Build Coastguard Worker 		"           [-P pid][-b size][-B buf][-m max][-C clock][command ...]\n"
87*58e6ee5fSAndroid Build Coastguard Worker 		"          -e enable event\n"
88*58e6ee5fSAndroid Build Coastguard Worker 		"          -f filter for previous -e event\n"
89*58e6ee5fSAndroid Build Coastguard Worker 		"          -R trigger for previous -e event\n"
90*58e6ee5fSAndroid Build Coastguard Worker 		"          -p set ftrace plugin\n"
91*58e6ee5fSAndroid Build Coastguard Worker 		"          -P set PIDs to be traced\n"
92*58e6ee5fSAndroid Build Coastguard Worker 		"          -c also trace the children of -F (or -P if kernel supports it)\n"
93*58e6ee5fSAndroid Build Coastguard Worker 		"          -C set the trace clock\n"
94*58e6ee5fSAndroid Build Coastguard Worker 		"          -T do a stacktrace on all events\n"
95*58e6ee5fSAndroid Build Coastguard Worker 		"          -l filter function name\n"
96*58e6ee5fSAndroid Build Coastguard Worker 		"          -g set graph function\n"
97*58e6ee5fSAndroid Build Coastguard Worker 		"          -n do not trace function\n"
98*58e6ee5fSAndroid Build Coastguard Worker 		"          -m max size per CPU in kilobytes\n"
99*58e6ee5fSAndroid Build Coastguard Worker 		"          -M set CPU mask to trace\n"
100*58e6ee5fSAndroid Build Coastguard Worker 		"          -v will negate all -e (disable those events) and -B (delete those instances) after it\n"
101*58e6ee5fSAndroid Build Coastguard Worker 		"          -d disable function tracer when running\n"
102*58e6ee5fSAndroid Build Coastguard Worker 		"          -D Full disable of function tracing (for all users)\n"
103*58e6ee5fSAndroid Build Coastguard Worker 		"          -O option to enable (or disable)\n"
104*58e6ee5fSAndroid Build Coastguard Worker 		"          -b change kernel buffersize (in kilobytes per CPU)\n"
105*58e6ee5fSAndroid Build Coastguard Worker 		"          -B create sub buffer and following events will be enabled here\n"
106*58e6ee5fSAndroid Build Coastguard Worker 		"          -i do not fail if an event is not found\n"
107*58e6ee5fSAndroid Build Coastguard Worker 		"          -q print no output to the screen\n"
108*58e6ee5fSAndroid Build Coastguard Worker 		"          --quiet print no output to the screen\n"
109*58e6ee5fSAndroid Build Coastguard Worker 		"          --module filter module name\n"
110*58e6ee5fSAndroid Build Coastguard Worker 		"          --func-stack perform a stack trace for function tracer\n"
111*58e6ee5fSAndroid Build Coastguard Worker 		"             (use with caution)\n"
112*58e6ee5fSAndroid Build Coastguard Worker 		"          --max-graph-depth limit function_graph depth\n"
113*58e6ee5fSAndroid Build Coastguard Worker 		"          --cmdlines-size change kernel saved_cmdlines_size\n"
114*58e6ee5fSAndroid Build Coastguard Worker 		"          --user execute the specified [command ...] as given user\n"
115*58e6ee5fSAndroid Build Coastguard Worker 		"          --fork return immediately if a command is specified\n"
116*58e6ee5fSAndroid Build Coastguard Worker 		"          --verbose 'level' Set the desired log level\n"
117*58e6ee5fSAndroid Build Coastguard Worker 	},
118*58e6ee5fSAndroid Build Coastguard Worker 	{
119*58e6ee5fSAndroid Build Coastguard Worker 		"start",
120*58e6ee5fSAndroid Build Coastguard Worker 		"start tracing without recording into a file",
121*58e6ee5fSAndroid Build Coastguard Worker 		" %s start [-e event][-p plugin][-d][-O option ][-P pid]\n"
122*58e6ee5fSAndroid Build Coastguard Worker 		"          Uses same options as record.\n"
123*58e6ee5fSAndroid Build Coastguard Worker 		"          It only enables the tracing and exits\n"
124*58e6ee5fSAndroid Build Coastguard Worker 		"\n"
125*58e6ee5fSAndroid Build Coastguard Worker 		"        --fork: If a command is specified, then return right after it forks\n"
126*58e6ee5fSAndroid Build Coastguard Worker 		"        --verbose 'level' Set the desired log level\n"
127*58e6ee5fSAndroid Build Coastguard Worker 	},
128*58e6ee5fSAndroid Build Coastguard Worker 	{
129*58e6ee5fSAndroid Build Coastguard Worker 		"extract",
130*58e6ee5fSAndroid Build Coastguard Worker 		"extract a trace from the kernel",
131*58e6ee5fSAndroid Build Coastguard Worker 		" %s extract [-p plugin][-O option][-o file][-B buf][-s][-a][-t]\n"
132*58e6ee5fSAndroid Build Coastguard Worker 		"          Uses similar options as record, but only reads an existing trace.\n"
133*58e6ee5fSAndroid Build Coastguard Worker 		"          -s : extract the snapshot instead of the main buffer\n"
134*58e6ee5fSAndroid Build Coastguard Worker 		"          -B : extract a given buffer (more than one may be specified)\n"
135*58e6ee5fSAndroid Build Coastguard Worker 		"          -a : extract all buffers (except top one)\n"
136*58e6ee5fSAndroid Build Coastguard Worker 		"          -t : extract the top level buffer (useful with -B and -a)\n"
137*58e6ee5fSAndroid Build Coastguard Worker 		"          --verbose 'level' Set the desired log level\n"
138*58e6ee5fSAndroid Build Coastguard Worker 	},
139*58e6ee5fSAndroid Build Coastguard Worker 	{
140*58e6ee5fSAndroid Build Coastguard Worker 		"stop",
141*58e6ee5fSAndroid Build Coastguard Worker 		"stop the kernel from recording trace data",
142*58e6ee5fSAndroid Build Coastguard Worker 		" %s stop [-B buf [-B buf]..] [-a] [-t]\n"
143*58e6ee5fSAndroid Build Coastguard Worker 		"          Stops the tracer from recording more data.\n"
144*58e6ee5fSAndroid Build Coastguard Worker 		"          Used in conjunction with start\n"
145*58e6ee5fSAndroid Build Coastguard Worker 		"          -B stop a given buffer (more than one may be specified)\n"
146*58e6ee5fSAndroid Build Coastguard Worker 		"          -a stop all buffers (except top one)\n"
147*58e6ee5fSAndroid Build Coastguard Worker 		"          -t stop the top level buffer (useful with -B or -a)\n"
148*58e6ee5fSAndroid Build Coastguard Worker 	},
149*58e6ee5fSAndroid Build Coastguard Worker 	{
150*58e6ee5fSAndroid Build Coastguard Worker 		"restart",
151*58e6ee5fSAndroid Build Coastguard Worker 		"restart the kernel trace data recording",
152*58e6ee5fSAndroid Build Coastguard Worker 		" %s restart [-B buf [-B buf]..] [-a] [-t]\n"
153*58e6ee5fSAndroid Build Coastguard Worker 		"          Restarts recording after a trace-cmd stop.\n"
154*58e6ee5fSAndroid Build Coastguard Worker 		"          Used in conjunction with stop\n"
155*58e6ee5fSAndroid Build Coastguard Worker 		"          -B restart a given buffer (more than one may be specified)\n"
156*58e6ee5fSAndroid Build Coastguard Worker 		"          -a restart all buffers (except top one)\n"
157*58e6ee5fSAndroid Build Coastguard Worker 		"          -t restart the top level buffer (useful with -B or -a)\n"
158*58e6ee5fSAndroid Build Coastguard Worker 	},
159*58e6ee5fSAndroid Build Coastguard Worker 	{
160*58e6ee5fSAndroid Build Coastguard Worker 		"show",
161*58e6ee5fSAndroid Build Coastguard Worker 		"show the contents of the kernel tracing buffer",
162*58e6ee5fSAndroid Build Coastguard Worker 		" %s show [-p|-s][-c cpu][-B buf][options]\n"
163*58e6ee5fSAndroid Build Coastguard Worker 		"          Basically, this is a cat of the trace file.\n"
164*58e6ee5fSAndroid Build Coastguard Worker 		"          -p read the trace_pipe file instead\n"
165*58e6ee5fSAndroid Build Coastguard Worker 		"          -s read the snapshot file instance\n"
166*58e6ee5fSAndroid Build Coastguard Worker 		"           (Can't have both -p and -s)\n"
167*58e6ee5fSAndroid Build Coastguard Worker 		"          -c just show the file associated with a given CPU\n"
168*58e6ee5fSAndroid Build Coastguard Worker 		"          -B read from a tracing buffer instance.\n"
169*58e6ee5fSAndroid Build Coastguard Worker 		"          -f display the file path that is being dumped\n"
170*58e6ee5fSAndroid Build Coastguard Worker 		"          The following options shows the corresponding file name\n"
171*58e6ee5fSAndroid Build Coastguard Worker 		"           and then exits.\n"
172*58e6ee5fSAndroid Build Coastguard Worker 		"          --tracing_on\n"
173*58e6ee5fSAndroid Build Coastguard Worker 		"          --current_tracer\n"
174*58e6ee5fSAndroid Build Coastguard Worker 		"          --buffer_size (for buffer_size_kb)\n"
175*58e6ee5fSAndroid Build Coastguard Worker 		"          --buffer_total_size (for buffer_total_size_kb)\n"
176*58e6ee5fSAndroid Build Coastguard Worker 		"          --ftrace_filter (for set_ftrace_filter)\n"
177*58e6ee5fSAndroid Build Coastguard Worker 		"          --ftrace_notrace (for set_ftrace_notrace)\n"
178*58e6ee5fSAndroid Build Coastguard Worker 		"          --ftrace_pid (for set_ftrace_pid)\n"
179*58e6ee5fSAndroid Build Coastguard Worker 		"          --graph_function (for set_graph_function)\n"
180*58e6ee5fSAndroid Build Coastguard Worker 		"          --graph_notrace (for set_graph_notrace)\n"
181*58e6ee5fSAndroid Build Coastguard Worker 		"          --cpumask (for tracing_cpumask)\n"
182*58e6ee5fSAndroid Build Coastguard Worker 	},
183*58e6ee5fSAndroid Build Coastguard Worker 	{
184*58e6ee5fSAndroid Build Coastguard Worker 		"reset",
185*58e6ee5fSAndroid Build Coastguard Worker 		"disable all kernel tracing and clear the trace buffers",
186*58e6ee5fSAndroid Build Coastguard Worker 		" %s reset [-b size][-B buf][-a][-d][-t]\n"
187*58e6ee5fSAndroid Build Coastguard Worker 		"          Disables the tracer (may reset trace file)\n"
188*58e6ee5fSAndroid Build Coastguard Worker 		"          Used in conjunction with start\n"
189*58e6ee5fSAndroid Build Coastguard Worker 		"          -b change the kernel buffer size (in kilobytes per CPU)\n"
190*58e6ee5fSAndroid Build Coastguard Worker 		"          -d delete the previous specified instance\n"
191*58e6ee5fSAndroid Build Coastguard Worker 		"          -B reset the given buffer instance (may specify multiple -B)\n"
192*58e6ee5fSAndroid Build Coastguard Worker 		"          -a reset all instances (except top one)\n"
193*58e6ee5fSAndroid Build Coastguard Worker 		"          -t reset the top level instance (useful with -B or -a)\n"
194*58e6ee5fSAndroid Build Coastguard Worker 	},
195*58e6ee5fSAndroid Build Coastguard Worker 	{
196*58e6ee5fSAndroid Build Coastguard Worker 		"clear",
197*58e6ee5fSAndroid Build Coastguard Worker 		"clear the trace buffers",
198*58e6ee5fSAndroid Build Coastguard Worker 		" %s clear [-B buf][-a]\n"
199*58e6ee5fSAndroid Build Coastguard Worker 		"          -B clear the given buffer (may specify multiple -B)\n"
200*58e6ee5fSAndroid Build Coastguard Worker 		"          -a clear all existing buffers, including the top level one\n"
201*58e6ee5fSAndroid Build Coastguard Worker 	},
202*58e6ee5fSAndroid Build Coastguard Worker 	{
203*58e6ee5fSAndroid Build Coastguard Worker 		"report",
204*58e6ee5fSAndroid Build Coastguard Worker 		"read out the trace stored in a trace.dat file",
205*58e6ee5fSAndroid Build Coastguard Worker 		" %s report [-i file] [--cpu cpu] [-e][-f][-l][-P][-L][-N][-R][-E]\\\n"
206*58e6ee5fSAndroid Build Coastguard Worker 		"           [-r events][-n events][-F filter][-v][-V[1-6]][-T][-O option]\n"
207*58e6ee5fSAndroid Build Coastguard Worker 		"           [-H [start_system:]start_event,start_match[,pid]/[end_system:]end_event,end_match[,flags]\n"
208*58e6ee5fSAndroid Build Coastguard Worker 		"           [-G]\n"
209*58e6ee5fSAndroid Build Coastguard Worker 		"          -i input file [default trace.dat]\n"
210*58e6ee5fSAndroid Build Coastguard Worker 		"          -e show file endianess\n"
211*58e6ee5fSAndroid Build Coastguard Worker 		"          -f show function mapping list\n"
212*58e6ee5fSAndroid Build Coastguard Worker 		"          -P show printk list\n"
213*58e6ee5fSAndroid Build Coastguard Worker 		"          -E show event files stored\n"
214*58e6ee5fSAndroid Build Coastguard Worker 		"          -F filter to filter output on\n"
215*58e6ee5fSAndroid Build Coastguard Worker 		"          -I filter out events with the HARDIRQ flag set\n"
216*58e6ee5fSAndroid Build Coastguard Worker 		"          -S filter out events with the SOFTIRQ flag set\n"
217*58e6ee5fSAndroid Build Coastguard Worker 		"          -t print out full timestamp. Do not truncate to 6 places.\n"
218*58e6ee5fSAndroid Build Coastguard Worker 		"          -R raw format: ignore print format and only show field data\n"
219*58e6ee5fSAndroid Build Coastguard Worker 		"          -r raw format the events that match the option\n"
220*58e6ee5fSAndroid Build Coastguard Worker 		"          -v will negate all -F after it (Not show matches)\n"
221*58e6ee5fSAndroid Build Coastguard Worker 		"          -T print out the filter strings created and exit\n"
222*58e6ee5fSAndroid Build Coastguard Worker 		"          -V[level] verbose (shows plugins being loaded)\n"
223*58e6ee5fSAndroid Build Coastguard Worker 		"              With optional level (see --verbose numbers)\n"
224*58e6ee5fSAndroid Build Coastguard Worker 		"          -L load only local (~/.trace-cmd/plugins) plugins\n"
225*58e6ee5fSAndroid Build Coastguard Worker 		"          -N do not load any plugins\n"
226*58e6ee5fSAndroid Build Coastguard Worker 		"          -n ignore plugin handlers for events that match the option\n"
227*58e6ee5fSAndroid Build Coastguard Worker 		"          -w show wakeup latencies\n"
228*58e6ee5fSAndroid Build Coastguard Worker 		"          -l show latency format (default with latency tracers)\n"
229*58e6ee5fSAndroid Build Coastguard Worker 		"          -O plugin option -O [plugin:]var[=val]\n"
230*58e6ee5fSAndroid Build Coastguard Worker 		"          --cpu <cpu1,cpu2,...> - filter events according to the given cpu list.\n"
231*58e6ee5fSAndroid Build Coastguard Worker 		"                                  A range of CPUs can be specified using 'cpuX-cpuY' notation.\n"
232*58e6ee5fSAndroid Build Coastguard Worker 		"          --cpus - List the CPUs that have content in it then exit.\n"
233*58e6ee5fSAndroid Build Coastguard Worker 		"          --check-events return whether all event formats can be parsed\n"
234*58e6ee5fSAndroid Build Coastguard Worker 		"          --stat - show the buffer stats that were reported at the end of the record.\n"
235*58e6ee5fSAndroid Build Coastguard Worker 		"          --uname - show uname of the record, if it was saved\n"
236*58e6ee5fSAndroid Build Coastguard Worker 		"          --version - show version used to build the trace-cmd exec that created the file\n"
237*58e6ee5fSAndroid Build Coastguard Worker 		"          --profile report stats on where tasks are blocked and such\n"
238*58e6ee5fSAndroid Build Coastguard Worker 		"          -G when profiling, set soft and hard irqs as global\n"
239*58e6ee5fSAndroid Build Coastguard Worker 		"          -H Allows users to hook two events together for timings\n"
240*58e6ee5fSAndroid Build Coastguard Worker 		"             (used with --profile)\n"
241*58e6ee5fSAndroid Build Coastguard Worker 		"          --by-comm used with --profile, merge events for related comms\n"
242*58e6ee5fSAndroid Build Coastguard Worker 		"          --ts-offset will add amount to timestamp of all events of the\n"
243*58e6ee5fSAndroid Build Coastguard Worker 		"                     previous data file.\n"
244*58e6ee5fSAndroid Build Coastguard Worker 		"          --ts2secs HZ, pass in the timestamp frequency (per second)\n"
245*58e6ee5fSAndroid Build Coastguard Worker 		"                     to convert the displayed timestamps to seconds\n"
246*58e6ee5fSAndroid Build Coastguard Worker 		"                     Affects the previous data file, unless there was no\n"
247*58e6ee5fSAndroid Build Coastguard Worker 		"                     previous data file, in which case it becomes default\n"
248*58e6ee5fSAndroid Build Coastguard Worker 		"          --ts-diff Show the delta timestamp between events.\n"
249*58e6ee5fSAndroid Build Coastguard Worker 		"          --ts-check Check to make sure no time stamp on any CPU goes backwards.\n"
250*58e6ee5fSAndroid Build Coastguard Worker 		"          --nodate Ignore the --date processing of trace-cmd record.\n"
251*58e6ee5fSAndroid Build Coastguard Worker 		"          --raw-ts Display raw timestamps, without any corrections.\n"
252*58e6ee5fSAndroid Build Coastguard Worker 		"          --align-ts Display timestamps aligned to the first event.\n"
253*58e6ee5fSAndroid Build Coastguard Worker 		"          --verbose[=level] Set the desired log level\n"
254*58e6ee5fSAndroid Build Coastguard Worker 		"                0 or none  - no error messages\n"
255*58e6ee5fSAndroid Build Coastguard Worker 		"                1 or crit  - only critical messages\n"
256*58e6ee5fSAndroid Build Coastguard Worker 		"                2 or err   - 'crit' and error messages\n"
257*58e6ee5fSAndroid Build Coastguard Worker 		"                3 or warn  - 'err' and warning messages\n"
258*58e6ee5fSAndroid Build Coastguard Worker 		"                4 or info  - 'warn' and informational messages\n"
259*58e6ee5fSAndroid Build Coastguard Worker 		"                5 or debug - 'info' and debugging messages\n"
260*58e6ee5fSAndroid Build Coastguard Worker 		"                6 or all   - same as debug\n"
261*58e6ee5fSAndroid Build Coastguard Worker 	},
262*58e6ee5fSAndroid Build Coastguard Worker 	{
263*58e6ee5fSAndroid Build Coastguard Worker 		"stream",
264*58e6ee5fSAndroid Build Coastguard Worker 		"Start tracing and read the output directly",
265*58e6ee5fSAndroid Build Coastguard Worker 		" %s stream [-e event][-p plugin][-d][-O option ][-P pid]\n"
266*58e6ee5fSAndroid Build Coastguard Worker 		"          Uses same options as record but does not write to files or the network.\n"
267*58e6ee5fSAndroid Build Coastguard Worker 		"          --verbose 'level' Set the desired log level\n"
268*58e6ee5fSAndroid Build Coastguard Worker 	},
269*58e6ee5fSAndroid Build Coastguard Worker 	{
270*58e6ee5fSAndroid Build Coastguard Worker 		"profile",
271*58e6ee5fSAndroid Build Coastguard Worker 		"Start profiling and read the output directly",
272*58e6ee5fSAndroid Build Coastguard Worker 		" %s profile [-e event][-p plugin][-d][-O option ][-P pid][-G][-S][-o output]\n"
273*58e6ee5fSAndroid Build Coastguard Worker 		"    [-H [start_system:]start_event,start_match[,pid]/[end_system:]end_event,end_match[,flags]\n\n"
274*58e6ee5fSAndroid Build Coastguard Worker 		"          Uses same options as record --profile.\n"
275*58e6ee5fSAndroid Build Coastguard Worker 		"          -H Allows users to hook two events together for timings\n"
276*58e6ee5fSAndroid Build Coastguard Worker 		"          --verbose 'level' Set the desired log level\n"
277*58e6ee5fSAndroid Build Coastguard Worker 	},
278*58e6ee5fSAndroid Build Coastguard Worker 	{
279*58e6ee5fSAndroid Build Coastguard Worker 		"hist",
280*58e6ee5fSAndroid Build Coastguard Worker 		"show a histogram of the trace.dat information",
281*58e6ee5fSAndroid Build Coastguard Worker 		" %s hist [-i file][-P] [file]"
282*58e6ee5fSAndroid Build Coastguard Worker 		"          -P ignore pids (compact all functions)\n"
283*58e6ee5fSAndroid Build Coastguard Worker 	},
284*58e6ee5fSAndroid Build Coastguard Worker 	{
285*58e6ee5fSAndroid Build Coastguard Worker 		"stat",
286*58e6ee5fSAndroid Build Coastguard Worker 		"show the status of the running tracing (ftrace) system",
287*58e6ee5fSAndroid Build Coastguard Worker 		" %s stat [-B buf][-t][-o]"
288*58e6ee5fSAndroid Build Coastguard Worker 		"          -B show the status of a instance buffer\n"
289*58e6ee5fSAndroid Build Coastguard Worker 		"          -t show the top level status along with buffer specified by -B\n"
290*58e6ee5fSAndroid Build Coastguard Worker 		"          -o list tracing options\n"
291*58e6ee5fSAndroid Build Coastguard Worker 	},
292*58e6ee5fSAndroid Build Coastguard Worker 	{
293*58e6ee5fSAndroid Build Coastguard Worker 		"split",
294*58e6ee5fSAndroid Build Coastguard Worker 		"parse a trace.dat file into smaller file(s)",
295*58e6ee5fSAndroid Build Coastguard Worker 		" %s split [options] -o file [start [end]]\n"
296*58e6ee5fSAndroid Build Coastguard Worker 		"          -o output file to write to (file.1, file.2, etc)\n"
297*58e6ee5fSAndroid Build Coastguard Worker 		"          -s n  split file up by n seconds\n"
298*58e6ee5fSAndroid Build Coastguard Worker 		"          -m n  split file up by n milliseconds\n"
299*58e6ee5fSAndroid Build Coastguard Worker 		"          -u n  split file up by n microseconds\n"
300*58e6ee5fSAndroid Build Coastguard Worker 		"          -e n  split file up by n events\n"
301*58e6ee5fSAndroid Build Coastguard Worker 		"          -p n  split file up by n pages\n"
302*58e6ee5fSAndroid Build Coastguard Worker 		"          -r    repeat from start to end\n"
303*58e6ee5fSAndroid Build Coastguard Worker 		"          -c    per cpu, that is -p 2 will be 2 pages for each CPU\n"
304*58e6ee5fSAndroid Build Coastguard Worker 		"          if option is specified, it will split the file\n"
305*58e6ee5fSAndroid Build Coastguard Worker 		"           up starting at start, and ending at end\n"
306*58e6ee5fSAndroid Build Coastguard Worker 		"          start - decimal start time in seconds (ex: 75678.923853)\n"
307*58e6ee5fSAndroid Build Coastguard Worker 		"                  if left out, will start at beginning of file\n"
308*58e6ee5fSAndroid Build Coastguard Worker 		"          end   - decimal end time in seconds\n"
309*58e6ee5fSAndroid Build Coastguard Worker 	},
310*58e6ee5fSAndroid Build Coastguard Worker 	{
311*58e6ee5fSAndroid Build Coastguard Worker 		"options",
312*58e6ee5fSAndroid Build Coastguard Worker 		"list the plugin options available for trace-cmd report",
313*58e6ee5fSAndroid Build Coastguard Worker 		" %s options\n"
314*58e6ee5fSAndroid Build Coastguard Worker 	},
315*58e6ee5fSAndroid Build Coastguard Worker 	{
316*58e6ee5fSAndroid Build Coastguard Worker 		"listen",
317*58e6ee5fSAndroid Build Coastguard Worker 		"listen on a network socket for trace clients",
318*58e6ee5fSAndroid Build Coastguard Worker 		" %s listen -p port[-D][-o file][-d dir][-l logfile]\n"
319*58e6ee5fSAndroid Build Coastguard Worker 		"          Creates a socket to listen for clients.\n"
320*58e6ee5fSAndroid Build Coastguard Worker 		"          -p port number to listen on.\n"
321*58e6ee5fSAndroid Build Coastguard Worker 		"          -D run in daemon mode.\n"
322*58e6ee5fSAndroid Build Coastguard Worker 		"          -V listen on a vsocket instead.\n"
323*58e6ee5fSAndroid Build Coastguard Worker 		"          -o file name to use for clients.\n"
324*58e6ee5fSAndroid Build Coastguard Worker 		"          -d directory to store client files.\n"
325*58e6ee5fSAndroid Build Coastguard Worker 		"          -l logfile to write messages to.\n"
326*58e6ee5fSAndroid Build Coastguard Worker 		"          --verbose 'level' Set the desired log level\n"
327*58e6ee5fSAndroid Build Coastguard Worker 	},
328*58e6ee5fSAndroid Build Coastguard Worker 	{
329*58e6ee5fSAndroid Build Coastguard Worker 		"agent",
330*58e6ee5fSAndroid Build Coastguard Worker 		"listen on a vsocket for trace clients",
331*58e6ee5fSAndroid Build Coastguard Worker 		" %s agent -p port[-D]\n"
332*58e6ee5fSAndroid Build Coastguard Worker 		"          Creates a vsocket to listen for clients.\n"
333*58e6ee5fSAndroid Build Coastguard Worker 		"          -N Connect to IP via TCP instead of vsockets\n"
334*58e6ee5fSAndroid Build Coastguard Worker 		"             *** Insecure setting, only use on a trusted network ***\n"
335*58e6ee5fSAndroid Build Coastguard Worker 		"             ***   Only use if the client is totally trusted.    ***\n"
336*58e6ee5fSAndroid Build Coastguard Worker 		"          -p port number to listen on.\n"
337*58e6ee5fSAndroid Build Coastguard Worker 		"          -D run in daemon mode.\n"
338*58e6ee5fSAndroid Build Coastguard Worker 		"          --verbose 'level' Set the desired log level\n"
339*58e6ee5fSAndroid Build Coastguard Worker 	},
340*58e6ee5fSAndroid Build Coastguard Worker 	{
341*58e6ee5fSAndroid Build Coastguard Worker 		"setup-guest",
342*58e6ee5fSAndroid Build Coastguard Worker 		"create FIFOs for tracing guest VMs",
343*58e6ee5fSAndroid Build Coastguard Worker 		" %s setup-guest [-c cpus][-p perm][-g group][-a] guest\n"
344*58e6ee5fSAndroid Build Coastguard Worker 		"          -c number of guest virtual CPUs\n"
345*58e6ee5fSAndroid Build Coastguard Worker 		"          -p FIFOs permissions (default: 0660)\n"
346*58e6ee5fSAndroid Build Coastguard Worker 		"          -g FIFOs group owner\n"
347*58e6ee5fSAndroid Build Coastguard Worker 		"          -a Attach FIFOs to guest VM config\n"
348*58e6ee5fSAndroid Build Coastguard Worker 	},
349*58e6ee5fSAndroid Build Coastguard Worker 	{
350*58e6ee5fSAndroid Build Coastguard Worker 		"list",
351*58e6ee5fSAndroid Build Coastguard Worker 		"list the available events, plugins or options",
352*58e6ee5fSAndroid Build Coastguard Worker 		" %s list [-e [regex]][-t][-o][-f [regex]]\n"
353*58e6ee5fSAndroid Build Coastguard Worker 		"          -e list available events\n"
354*58e6ee5fSAndroid Build Coastguard Worker 		"            -F show event format\n"
355*58e6ee5fSAndroid Build Coastguard Worker 		"            --full show the print fmt with -F\n"
356*58e6ee5fSAndroid Build Coastguard Worker 		"            -R show event triggers\n"
357*58e6ee5fSAndroid Build Coastguard Worker 		"            -l show event filters\n"
358*58e6ee5fSAndroid Build Coastguard Worker 		"          -t list available tracers\n"
359*58e6ee5fSAndroid Build Coastguard Worker 		"          -o list available options\n"
360*58e6ee5fSAndroid Build Coastguard Worker 		"          -f [regex] list available functions to filter on\n"
361*58e6ee5fSAndroid Build Coastguard Worker 		"          -P list loaded plugin files (by path)\n"
362*58e6ee5fSAndroid Build Coastguard Worker 		"          -O list plugin options\n"
363*58e6ee5fSAndroid Build Coastguard Worker 		"          -B list defined buffer instances\n"
364*58e6ee5fSAndroid Build Coastguard Worker 		"          -C list the defined clocks (and active one)\n"
365*58e6ee5fSAndroid Build Coastguard Worker 		"          -c list the supported trace file compression algorithms\n"
366*58e6ee5fSAndroid Build Coastguard Worker 	},
367*58e6ee5fSAndroid Build Coastguard Worker 	{
368*58e6ee5fSAndroid Build Coastguard Worker 		"restore",
369*58e6ee5fSAndroid Build Coastguard Worker 		"restore a crashed record",
370*58e6ee5fSAndroid Build Coastguard Worker 		" %s restore [-c][-o file][-i file] cpu-file [cpu-file ...]\n"
371*58e6ee5fSAndroid Build Coastguard Worker 		"          -c create a partial trace.dat file only\n"
372*58e6ee5fSAndroid Build Coastguard Worker 		"          -o output file\n"
373*58e6ee5fSAndroid Build Coastguard Worker 		"          -i partial trace.dat file for input\n"
374*58e6ee5fSAndroid Build Coastguard Worker 	},
375*58e6ee5fSAndroid Build Coastguard Worker 	{
376*58e6ee5fSAndroid Build Coastguard Worker 		"snapshot",
377*58e6ee5fSAndroid Build Coastguard Worker 		"take snapshot of running trace",
378*58e6ee5fSAndroid Build Coastguard Worker 		" %s snapshot [-s][-r][-f][-B buf][-c cpu]\n"
379*58e6ee5fSAndroid Build Coastguard Worker 		"          -s take a snapshot of the trace buffer\n"
380*58e6ee5fSAndroid Build Coastguard Worker 		"          -r reset current snapshot\n"
381*58e6ee5fSAndroid Build Coastguard Worker 		"          -f free the snapshot buffer\n"
382*58e6ee5fSAndroid Build Coastguard Worker 		"            without the above three options, display snapshot\n"
383*58e6ee5fSAndroid Build Coastguard Worker 		"          -c operate on the snapshot buffer for the given CPU\n"
384*58e6ee5fSAndroid Build Coastguard Worker 		"          -B operate on the snapshot buffer for a tracing buffer instance.\n"
385*58e6ee5fSAndroid Build Coastguard Worker 	},
386*58e6ee5fSAndroid Build Coastguard Worker 	{
387*58e6ee5fSAndroid Build Coastguard Worker 		"stack",
388*58e6ee5fSAndroid Build Coastguard Worker 		"output, enable or disable kernel stack tracing",
389*58e6ee5fSAndroid Build Coastguard Worker 		" %s stack [--start][--stop][--reset]\n"
390*58e6ee5fSAndroid Build Coastguard Worker 		"          --start  enable the stack tracer\n"
391*58e6ee5fSAndroid Build Coastguard Worker 		"          --stop   disable the stack tracer\n"
392*58e6ee5fSAndroid Build Coastguard Worker 		"          --reset  reset the maximum stack found\n"
393*58e6ee5fSAndroid Build Coastguard Worker 		"          --verbose 'level' Set the desired log level\n"
394*58e6ee5fSAndroid Build Coastguard Worker 	},
395*58e6ee5fSAndroid Build Coastguard Worker 	{
396*58e6ee5fSAndroid Build Coastguard Worker 		"check-events",
397*58e6ee5fSAndroid Build Coastguard Worker 		"parse trace event formats",
398*58e6ee5fSAndroid Build Coastguard Worker 		" %s check-events [-N]\n"
399*58e6ee5fSAndroid Build Coastguard Worker 		"          -N do not load any plugins\n"
400*58e6ee5fSAndroid Build Coastguard Worker 		"          --verbose 'level' Set the desired log level\n"
401*58e6ee5fSAndroid Build Coastguard Worker 	},
402*58e6ee5fSAndroid Build Coastguard Worker 	{
403*58e6ee5fSAndroid Build Coastguard Worker 		"dump",
404*58e6ee5fSAndroid Build Coastguard Worker 		"read out the meta data from a trace file",
405*58e6ee5fSAndroid Build Coastguard Worker 		" %s dump [options]\n"
406*58e6ee5fSAndroid Build Coastguard Worker 		"          -i input file, default is trace.dat\n"
407*58e6ee5fSAndroid Build Coastguard Worker 		"          -v validate a trace file\n"
408*58e6ee5fSAndroid Build Coastguard Worker 		"          --all print all meta data from a trace file\n"
409*58e6ee5fSAndroid Build Coastguard Worker 		"          --summary print a meta data summary\n"
410*58e6ee5fSAndroid Build Coastguard Worker 		"          --head-page print header page information\n"
411*58e6ee5fSAndroid Build Coastguard Worker 		"          --head-event print header event information\n"
412*58e6ee5fSAndroid Build Coastguard Worker 		"          --ftrace-events print ftrace events format\n"
413*58e6ee5fSAndroid Build Coastguard Worker 		"          --systems print recorded event systems\n"
414*58e6ee5fSAndroid Build Coastguard Worker 		"          --events print format of recorded events\n"
415*58e6ee5fSAndroid Build Coastguard Worker 		"          --kallsyms print information of the mapping of function addresses to the function names\n"
416*58e6ee5fSAndroid Build Coastguard Worker 		"          --printk print trace_printk() format strings\n"
417*58e6ee5fSAndroid Build Coastguard Worker 		"          --cmd-lines print information mapping a PID to a process name\n"
418*58e6ee5fSAndroid Build Coastguard Worker 		"          --options print options\n"
419*58e6ee5fSAndroid Build Coastguard Worker 		"          --flyrecord information of offset and count of recorded events per CPU\n"
420*58e6ee5fSAndroid Build Coastguard Worker 		"          --clock trace clock, saved in the file\n"
421*58e6ee5fSAndroid Build Coastguard Worker 		"          -h, --help show usage information\n"
422*58e6ee5fSAndroid Build Coastguard Worker 		"          --verbose 'level' Set the desired log level\n"
423*58e6ee5fSAndroid Build Coastguard Worker 	},
424*58e6ee5fSAndroid Build Coastguard Worker 	{
425*58e6ee5fSAndroid Build Coastguard Worker 		"convert",
426*58e6ee5fSAndroid Build Coastguard Worker 		"convert trace file to different version",
427*58e6ee5fSAndroid Build Coastguard Worker 		" %s convert [options]\n"
428*58e6ee5fSAndroid Build Coastguard Worker 		"          -i input file, default is trace.dat\n"
429*58e6ee5fSAndroid Build Coastguard Worker 		"          -o output file, mandatory parameter.\n"
430*58e6ee5fSAndroid Build Coastguard Worker 		"             The output file can be specified also as last argument of the command\n"
431*58e6ee5fSAndroid Build Coastguard Worker 		"          --file-version set the desired trace file version\n"
432*58e6ee5fSAndroid Build Coastguard Worker 		"          --compression compress the trace output file, one of these strings can be passed:\n"
433*58e6ee5fSAndroid Build Coastguard Worker 		"                            any  - auto select the best available compression algorithm\n"
434*58e6ee5fSAndroid Build Coastguard Worker 		"                            none - do not compress the trace file\n"
435*58e6ee5fSAndroid Build Coastguard Worker 		"                            name - the name of the desired compression algorithms\n"
436*58e6ee5fSAndroid Build Coastguard Worker 		"                        available algorithms can be listed with trace-cmd list -c\n"	},
437*58e6ee5fSAndroid Build Coastguard Worker 	{
438*58e6ee5fSAndroid Build Coastguard Worker 		NULL, NULL, NULL
439*58e6ee5fSAndroid Build Coastguard Worker 	}
440*58e6ee5fSAndroid Build Coastguard Worker };
441*58e6ee5fSAndroid Build Coastguard Worker 
find_help(char * cmd)442*58e6ee5fSAndroid Build Coastguard Worker static struct usage_help *find_help(char *cmd)
443*58e6ee5fSAndroid Build Coastguard Worker {
444*58e6ee5fSAndroid Build Coastguard Worker 	struct usage_help *help;
445*58e6ee5fSAndroid Build Coastguard Worker 
446*58e6ee5fSAndroid Build Coastguard Worker 	help = usage_help;
447*58e6ee5fSAndroid Build Coastguard Worker 	while (help->name) {
448*58e6ee5fSAndroid Build Coastguard Worker 		if (strcmp(cmd, help->name) == 0)
449*58e6ee5fSAndroid Build Coastguard Worker 			return help;
450*58e6ee5fSAndroid Build Coastguard Worker 		help++;
451*58e6ee5fSAndroid Build Coastguard Worker 	}
452*58e6ee5fSAndroid Build Coastguard Worker 	return NULL;
453*58e6ee5fSAndroid Build Coastguard Worker }
454*58e6ee5fSAndroid Build Coastguard Worker 
usage(char ** argv)455*58e6ee5fSAndroid Build Coastguard Worker void usage(char **argv)
456*58e6ee5fSAndroid Build Coastguard Worker {
457*58e6ee5fSAndroid Build Coastguard Worker 	struct usage_help *help = NULL;
458*58e6ee5fSAndroid Build Coastguard Worker 	char *arg = argv[0];
459*58e6ee5fSAndroid Build Coastguard Worker 	char *p;
460*58e6ee5fSAndroid Build Coastguard Worker 
461*58e6ee5fSAndroid Build Coastguard Worker 	p = basename(arg);
462*58e6ee5fSAndroid Build Coastguard Worker 
463*58e6ee5fSAndroid Build Coastguard Worker 	printf("\n"
464*58e6ee5fSAndroid Build Coastguard Worker 	       "%s version %s (%s)\n\n"
465*58e6ee5fSAndroid Build Coastguard Worker 	       "usage:\n", p, VERSION_STRING, VERSION_GIT);
466*58e6ee5fSAndroid Build Coastguard Worker 
467*58e6ee5fSAndroid Build Coastguard Worker 	if (argv[1])
468*58e6ee5fSAndroid Build Coastguard Worker 		help = find_help(argv[1]);
469*58e6ee5fSAndroid Build Coastguard Worker 
470*58e6ee5fSAndroid Build Coastguard Worker 	if (help) {
471*58e6ee5fSAndroid Build Coastguard Worker 		printf(help->long_help, p);
472*58e6ee5fSAndroid Build Coastguard Worker 		goto out;
473*58e6ee5fSAndroid Build Coastguard Worker 	}
474*58e6ee5fSAndroid Build Coastguard Worker 
475*58e6ee5fSAndroid Build Coastguard Worker 	printf("  %s [COMMAND] ...\n\n"
476*58e6ee5fSAndroid Build Coastguard Worker 	       "  commands:\n", p);
477*58e6ee5fSAndroid Build Coastguard Worker 
478*58e6ee5fSAndroid Build Coastguard Worker 	help = usage_help;
479*58e6ee5fSAndroid Build Coastguard Worker 	while (help->name) {
480*58e6ee5fSAndroid Build Coastguard Worker 		printf("     %s - %s\n", help->name, help->short_help);
481*58e6ee5fSAndroid Build Coastguard Worker 		help++;
482*58e6ee5fSAndroid Build Coastguard Worker 	}
483*58e6ee5fSAndroid Build Coastguard Worker  out:
484*58e6ee5fSAndroid Build Coastguard Worker 	printf("\n");
485*58e6ee5fSAndroid Build Coastguard Worker 	exit(-1);
486*58e6ee5fSAndroid Build Coastguard Worker }
487*58e6ee5fSAndroid Build Coastguard Worker 
488*58e6ee5fSAndroid Build Coastguard Worker 
trace_usage(int argc,char ** argv)489*58e6ee5fSAndroid Build Coastguard Worker void trace_usage(int argc, char **argv)
490*58e6ee5fSAndroid Build Coastguard Worker {
491*58e6ee5fSAndroid Build Coastguard Worker 	usage(argv);
492*58e6ee5fSAndroid Build Coastguard Worker }
493