xref: /aosp_15_r20/external/trace-cmd/Documentation/libtracecmd/libtracecmd-files.txt (revision 58e6ee5f017f6a8912852c892d18457e4bafb554)
1*58e6ee5fSAndroid Build Coastguard Workerlibtracecmd(3)
2*58e6ee5fSAndroid Build Coastguard Worker=============
3*58e6ee5fSAndroid Build Coastguard Worker
4*58e6ee5fSAndroid Build Coastguard WorkerNAME
5*58e6ee5fSAndroid Build Coastguard Worker----
6*58e6ee5fSAndroid Build Coastguard Workertracecmd_open, tracecmd_open_fd, tracecmd_open_head, tracecmd_init_data,
7*58e6ee5fSAndroid Build Coastguard Workertracecmd_close - Open and close a trace file.
8*58e6ee5fSAndroid Build Coastguard Worker
9*58e6ee5fSAndroid Build Coastguard WorkerSYNOPSIS
10*58e6ee5fSAndroid Build Coastguard Worker--------
11*58e6ee5fSAndroid Build Coastguard Worker[verse]
12*58e6ee5fSAndroid Build Coastguard Worker--
13*58e6ee5fSAndroid Build Coastguard Worker*#include <trace-cmd.h>*
14*58e6ee5fSAndroid Build Coastguard Worker
15*58e6ee5fSAndroid Build Coastguard Workerstruct tracecmd_input pass:[*]*tracecmd_open*(const char pass:[*]_file_, int _flags_);
16*58e6ee5fSAndroid Build Coastguard Workerstruct tracecmd_input pass:[*]*tracecmd_open_fd*(int _fd_, int _flags_);
17*58e6ee5fSAndroid Build Coastguard Workerstruct tracecmd_input pass:[*]*tracecmd_open_head*(const char pass:[*]_file_, int _flags_);
18*58e6ee5fSAndroid Build Coastguard Workerint *tracecmd_init_data*(struct tracecmd_input pass:[*]_handle_);
19*58e6ee5fSAndroid Build Coastguard Workervoid *tracecmd_close*(struct tracecmd_input pass:[*]_handle_);
20*58e6ee5fSAndroid Build Coastguard Worker--
21*58e6ee5fSAndroid Build Coastguard Worker
22*58e6ee5fSAndroid Build Coastguard WorkerDESCRIPTION
23*58e6ee5fSAndroid Build Coastguard Worker-----------
24*58e6ee5fSAndroid Build Coastguard WorkerThis set of APIs can be used to open and close a trace file recorded by
25*58e6ee5fSAndroid Build Coastguard Worker_trace-cmd(1)_ and containing tracing information from ftrace, the official
26*58e6ee5fSAndroid Build Coastguard WorkerLinux kernel tracer. The opened file is represented by a _tracecmd_input_
27*58e6ee5fSAndroid Build Coastguard Workerstructure, all other library APIs that work with the file require a pointer
28*58e6ee5fSAndroid Build Coastguard Workerto the structure. The APIs for opening a trace file have a _flag_ input
29*58e6ee5fSAndroid Build Coastguard Workerparameter, which controls how the file will be opened and parsed. The _flag_
30*58e6ee5fSAndroid Build Coastguard Workeris a combination of these options:
31*58e6ee5fSAndroid Build Coastguard Worker
32*58e6ee5fSAndroid Build Coastguard Worker TRACECMD_FL_LOAD_NO_PLUGINS - Do not load any plugins
33*58e6ee5fSAndroid Build Coastguard Worker TRACECMD_FL_LOAD_NO_SYSTEM_PLUGINS - Do not load system wide plugins, load only "local only"
34*58e6ee5fSAndroid Build Coastguard Worker					plugins from user's home directory.
35*58e6ee5fSAndroid Build Coastguard Worker
36*58e6ee5fSAndroid Build Coastguard WorkerThe _tracecmd_open()_ function opens a given trace _file_, parses the
37*58e6ee5fSAndroid Build Coastguard Workermetadata headers from the file, allocates and initializes а _tracecmd_input_
38*58e6ee5fSAndroid Build Coastguard Workerhandler structure representing the file. It also initializes the handler
39*58e6ee5fSAndroid Build Coastguard Workerfor reading trace data from the file. The returned handler is ready to be
40*58e6ee5fSAndroid Build Coastguard Workerused with _tracecmd_read__ APIs.
41*58e6ee5fSAndroid Build Coastguard Worker
42*58e6ee5fSAndroid Build Coastguard WorkerThe _tracecmd_open_fd()_ function does the same as _tracecmd_open()_, but
43*58e6ee5fSAndroid Build Coastguard Workerworks with a file descriptor to a trace file, opened for reading.
44*58e6ee5fSAndroid Build Coastguard Worker
45*58e6ee5fSAndroid Build Coastguard WorkerThe _tracecmd_open_head()_ function is the same as _tracecmd_open()_, but
46*58e6ee5fSAndroid Build Coastguard Workerdoes not initialize the handler for reading trace data. It reads and parses
47*58e6ee5fSAndroid Build Coastguard Workerthe metadata headers only. The _tracecmd_init_data()_ should be used before
48*58e6ee5fSAndroid Build Coastguard Workerusing the _tracecmd_read__ APIs.
49*58e6ee5fSAndroid Build Coastguard Worker
50*58e6ee5fSAndroid Build Coastguard WorkerThe _tracecmd_init_data()_ function initializes a _handle_, allocated with
51*58e6ee5fSAndroid Build Coastguard Worker_tracecmd_open_head()_, for reading trace data from the file associated with
52*58e6ee5fSAndroid Build Coastguard Workerit. This API must be called before any of the _tracecmd_read__ APIs.
53*58e6ee5fSAndroid Build Coastguard Worker
54*58e6ee5fSAndroid Build Coastguard WorkerThe _tracecmd_close()_ function frees a _handle_, pointer to tracecmd_input
55*58e6ee5fSAndroid Build Coastguard Workerstructure, previously allocated with _tracecmd_open()_, _tracecmd_open_fd()_
56*58e6ee5fSAndroid Build Coastguard Workeror _tracecmd_open_head()_ APIs.
57*58e6ee5fSAndroid Build Coastguard Worker
58*58e6ee5fSAndroid Build Coastguard WorkerRETURN VALUE
59*58e6ee5fSAndroid Build Coastguard Worker------------
60*58e6ee5fSAndroid Build Coastguard WorkerThe _tracecmd_open()_, _tracecmd_open_fd()_ and _tracecmd_open_head()_
61*58e6ee5fSAndroid Build Coastguard Workerfunctions return a pointer to tracecmd_input structure or NULL in case of
62*58e6ee5fSAndroid Build Coastguard Workeran error. The returned structure must be free with _tracecmd_close()_.
63*58e6ee5fSAndroid Build Coastguard WorkerNote that if _tracecmd_open_fd()_ is used to allocate a tracecmd_input handler,
64*58e6ee5fSAndroid Build Coastguard Workerwhen _tracecmd_close()_ is called to close it, that fd will be closed also.
65*58e6ee5fSAndroid Build Coastguard Worker
66*58e6ee5fSAndroid Build Coastguard WorkerThe _tracecmd_init_data()_ function returns -1 in case of an error or
67*58e6ee5fSAndroid Build Coastguard Worker0 otherwise.
68*58e6ee5fSAndroid Build Coastguard Worker
69*58e6ee5fSAndroid Build Coastguard WorkerEXAMPLE
70*58e6ee5fSAndroid Build Coastguard Worker-------
71*58e6ee5fSAndroid Build Coastguard Worker[source,c]
72*58e6ee5fSAndroid Build Coastguard Worker--
73*58e6ee5fSAndroid Build Coastguard WorkerThe are two different use patterns for opening and reading trace data from
74*58e6ee5fSAndroid Build Coastguard Workera trace file, which can be used depending on the use case.
75*58e6ee5fSAndroid Build Coastguard Worker
76*58e6ee5fSAndroid Build Coastguard Worker1. Open and initialise the trace file in а single step:
77*58e6ee5fSAndroid Build Coastguard Worker
78*58e6ee5fSAndroid Build Coastguard Worker#include <trace-cmd.h>
79*58e6ee5fSAndroid Build Coastguard Worker...
80*58e6ee5fSAndroid Build Coastguard Workerstruct tracecmd_input *handle = tracecmd_open("trace.dat");
81*58e6ee5fSAndroid Build Coastguard Worker	if (!handle) {
82*58e6ee5fSAndroid Build Coastguard Worker		/* Failed to open trace.dat file */
83*58e6ee5fSAndroid Build Coastguard Worker	}
84*58e6ee5fSAndroid Build Coastguard Worker...
85*58e6ee5fSAndroid Build Coastguard Worker	/* Read tracing data from the file, using the handle */
86*58e6ee5fSAndroid Build Coastguard Worker...
87*58e6ee5fSAndroid Build Coastguard Worker	tracecmd_close(handle);
88*58e6ee5fSAndroid Build Coastguard Worker...
89*58e6ee5fSAndroid Build Coastguard Workerint fd;
90*58e6ee5fSAndroid Build Coastguard Worker	fd = = open("trace.dat", O_RDONLY);
91*58e6ee5fSAndroid Build Coastguard Worker	if (fd < 0) {
92*58e6ee5fSAndroid Build Coastguard Worker		/* Failed to open trace file for reading */
93*58e6ee5fSAndroid Build Coastguard Worker	}
94*58e6ee5fSAndroid Build Coastguard Worker	handle = tracecmd_open_fd(fd);
95*58e6ee5fSAndroid Build Coastguard Worker	if (!handle) {
96*58e6ee5fSAndroid Build Coastguard Worker		close(fd);
97*58e6ee5fSAndroid Build Coastguard Worker		/* Failed to initialise handler for reading the trace file */
98*58e6ee5fSAndroid Build Coastguard Worker	}
99*58e6ee5fSAndroid Build Coastguard Worker...
100*58e6ee5fSAndroid Build Coastguard Worker	/* Read tracing data from the file, using the handle */
101*58e6ee5fSAndroid Build Coastguard Worker...
102*58e6ee5fSAndroid Build Coastguard Worker	tracecmd_close(handle);
103*58e6ee5fSAndroid Build Coastguard Worker...
104*58e6ee5fSAndroid Build Coastguard Worker
105*58e6ee5fSAndroid Build Coastguard Worker2. Open and initialise the trace file in two steps. This allows to perform
106*58e6ee5fSAndroid Build Coastguard Workersome processing based on metadata, read from the file, before initialising
107*58e6ee5fSAndroid Build Coastguard Workerthe trace data for reading. Example for such use case is when opening multiple
108*58e6ee5fSAndroid Build Coastguard Workertrace files recorded in a same trace session. In that case timestamps of all
109*58e6ee5fSAndroid Build Coastguard Workertrace events must be adjusted based on the information from  the file's metadata
110*58e6ee5fSAndroid Build Coastguard Workerand before reading the trace data.
111*58e6ee5fSAndroid Build Coastguard Worker
112*58e6ee5fSAndroid Build Coastguard Worker#include <trace-cmd.h>
113*58e6ee5fSAndroid Build Coastguard Worker...
114*58e6ee5fSAndroid Build Coastguard Workerstruct tracecmd_input *handle = tracecmd_open_head("trace.dat");
115*58e6ee5fSAndroid Build Coastguard Worker	if (!handle) {
116*58e6ee5fSAndroid Build Coastguard Worker		/* Failed to open trace.dat file */
117*58e6ee5fSAndroid Build Coastguard Worker	}
118*58e6ee5fSAndroid Build Coastguard Worker...
119*58e6ee5fSAndroid Build Coastguard Worker	/* do some processing, before initialising the trace data for reading */
120*58e6ee5fSAndroid Build Coastguard Worker...
121*58e6ee5fSAndroid Build Coastguard Worker	if (tracecmd_init_data(handle) < 0) {
122*58e6ee5fSAndroid Build Coastguard Worker		/* Failed to initialize hadle for reading the trace data */
123*58e6ee5fSAndroid Build Coastguard Worker	}
124*58e6ee5fSAndroid Build Coastguard Worker...
125*58e6ee5fSAndroid Build Coastguard Worker	/* Read tracing data from the file, using the handle */
126*58e6ee5fSAndroid Build Coastguard Worker...
127*58e6ee5fSAndroid Build Coastguard Worker	tracecmd_close(handle);
128*58e6ee5fSAndroid Build Coastguard Worker...
129*58e6ee5fSAndroid Build Coastguard Worker--
130*58e6ee5fSAndroid Build Coastguard WorkerFILES
131*58e6ee5fSAndroid Build Coastguard Worker-----
132*58e6ee5fSAndroid Build Coastguard Worker[verse]
133*58e6ee5fSAndroid Build Coastguard Worker--
134*58e6ee5fSAndroid Build Coastguard Worker*trace-cmd.h*
135*58e6ee5fSAndroid Build Coastguard Worker	Header file to include in order to have access to the library APIs.
136*58e6ee5fSAndroid Build Coastguard Worker*-ltracecmd*
137*58e6ee5fSAndroid Build Coastguard Worker	Linker switch to add when building a program that uses the library.
138*58e6ee5fSAndroid Build Coastguard Worker--
139*58e6ee5fSAndroid Build Coastguard Worker
140*58e6ee5fSAndroid Build Coastguard WorkerSEE ALSO
141*58e6ee5fSAndroid Build Coastguard Worker--------
142*58e6ee5fSAndroid Build Coastguard Worker_libtracefs(3)_,
143*58e6ee5fSAndroid Build Coastguard Worker_libtraceevent(3)_,
144*58e6ee5fSAndroid Build Coastguard Worker_trace-cmd(1)_
145*58e6ee5fSAndroid Build Coastguard Worker_trace-cmd.dat(5)_
146*58e6ee5fSAndroid Build Coastguard Worker
147*58e6ee5fSAndroid Build Coastguard WorkerAUTHOR
148*58e6ee5fSAndroid Build Coastguard Worker------
149*58e6ee5fSAndroid Build Coastguard Worker[verse]
150*58e6ee5fSAndroid Build Coastguard Worker--
151*58e6ee5fSAndroid Build Coastguard Worker*Steven Rostedt* <[email protected]>
152*58e6ee5fSAndroid Build Coastguard Worker*Tzvetomir Stoyanov* <[email protected]>
153*58e6ee5fSAndroid Build Coastguard Worker--
154*58e6ee5fSAndroid Build Coastguard WorkerREPORTING BUGS
155*58e6ee5fSAndroid Build Coastguard Worker--------------
156*58e6ee5fSAndroid Build Coastguard WorkerReport bugs to  <[email protected]>
157*58e6ee5fSAndroid Build Coastguard Worker
158*58e6ee5fSAndroid Build Coastguard WorkerLICENSE
159*58e6ee5fSAndroid Build Coastguard Worker-------
160*58e6ee5fSAndroid Build Coastguard Workerlibtracecmd is Free Software licensed under the GNU LGPL 2.1
161*58e6ee5fSAndroid Build Coastguard Worker
162*58e6ee5fSAndroid Build Coastguard WorkerRESOURCES
163*58e6ee5fSAndroid Build Coastguard Worker---------
164*58e6ee5fSAndroid Build Coastguard Workerhttps://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git/
165*58e6ee5fSAndroid Build Coastguard Worker
166*58e6ee5fSAndroid Build Coastguard WorkerCOPYING
167*58e6ee5fSAndroid Build Coastguard Worker-------
168*58e6ee5fSAndroid Build Coastguard WorkerCopyright \(C) 2020 VMware, Inc. Free use of this software is granted under
169*58e6ee5fSAndroid Build Coastguard Workerthe terms of the GNU Public License (GPL).
170