xref: /aosp_15_r20/external/libtraceevent/Documentation/libtraceevent-tseq.txt (revision 436bf2bcd5202612ffffe471bbcc1f277cc8d28e)
1*436bf2bcSAndroid Build Coastguard Workerlibtraceevent(3)
2*436bf2bcSAndroid Build Coastguard Worker================
3*436bf2bcSAndroid Build Coastguard Worker
4*436bf2bcSAndroid Build Coastguard WorkerNAME
5*436bf2bcSAndroid Build Coastguard Worker----
6*436bf2bcSAndroid Build Coastguard Workertrace_seq_init, trace_seq_destroy, trace_seq_reset, trace_seq_terminate,
7*436bf2bcSAndroid Build Coastguard Workertrace_seq_putc, trace_seq_puts, trace_seq_printf, trace_seq_vprintf,
8*436bf2bcSAndroid Build Coastguard Workertrace_seq_do_fprintf, trace_seq_do_printf -
9*436bf2bcSAndroid Build Coastguard WorkerInitialize / destroy a trace sequence.
10*436bf2bcSAndroid Build Coastguard Worker
11*436bf2bcSAndroid Build Coastguard WorkerSYNOPSIS
12*436bf2bcSAndroid Build Coastguard Worker--------
13*436bf2bcSAndroid Build Coastguard Worker[verse]
14*436bf2bcSAndroid Build Coastguard Worker--
15*436bf2bcSAndroid Build Coastguard Worker*#include <event-parse.h>*
16*436bf2bcSAndroid Build Coastguard Worker*#include <trace-seq.h>*
17*436bf2bcSAndroid Build Coastguard Worker
18*436bf2bcSAndroid Build Coastguard Workervoid *trace_seq_init*(struct trace_seq pass:[*]_s_);
19*436bf2bcSAndroid Build Coastguard Workervoid *trace_seq_destroy*(struct trace_seq pass:[*]_s_);
20*436bf2bcSAndroid Build Coastguard Workervoid *trace_seq_reset*(struct trace_seq pass:[*]_s_);
21*436bf2bcSAndroid Build Coastguard Workervoid *trace_seq_terminate*(struct trace_seq pass:[*]_s_);
22*436bf2bcSAndroid Build Coastguard Workerint *trace_seq_putc*(struct trace_seq pass:[*]_s_, unsigned char _c_);
23*436bf2bcSAndroid Build Coastguard Workerint *trace_seq_puts*(struct trace_seq pass:[*]_s_, const char pass:[*]_str_);
24*436bf2bcSAndroid Build Coastguard Workerint *trace_seq_printf*(struct trace_seq pass:[*]_s_, const char pass:[*]_fmt_, _..._);
25*436bf2bcSAndroid Build Coastguard Workerint *trace_seq_vprintf*(struct trace_seq pass:[*]_s_, const char pass:[*]_fmt_, va_list _args_);
26*436bf2bcSAndroid Build Coastguard Workerint *trace_seq_do_printf*(struct trace_seq pass:[*]_s_);
27*436bf2bcSAndroid Build Coastguard Workerint *trace_seq_do_fprintf*(struct trace_seq pass:[*]_s_, FILE pass:[*]_fp_);
28*436bf2bcSAndroid Build Coastguard Worker--
29*436bf2bcSAndroid Build Coastguard Worker
30*436bf2bcSAndroid Build Coastguard WorkerDESCRIPTION
31*436bf2bcSAndroid Build Coastguard Worker-----------
32*436bf2bcSAndroid Build Coastguard WorkerTrace sequences are used to allow a function to call several other functions
33*436bf2bcSAndroid Build Coastguard Workerto create a string of data to use.
34*436bf2bcSAndroid Build Coastguard Worker
35*436bf2bcSAndroid Build Coastguard WorkerThe *trace_seq_init()* function initializes the trace sequence _s_.
36*436bf2bcSAndroid Build Coastguard Worker
37*436bf2bcSAndroid Build Coastguard WorkerThe *trace_seq_destroy()* function destroys the trace sequence _s_ and frees
38*436bf2bcSAndroid Build Coastguard Workerall its resources that it had used.
39*436bf2bcSAndroid Build Coastguard Worker
40*436bf2bcSAndroid Build Coastguard WorkerThe *trace_seq_reset()* function re-initializes the trace sequence _s_. All
41*436bf2bcSAndroid Build Coastguard Workercharacters already written in _s_ will be deleted.
42*436bf2bcSAndroid Build Coastguard Worker
43*436bf2bcSAndroid Build Coastguard WorkerThe *trace_seq_terminate()* function terminates the trace sequence _s_. It puts
44*436bf2bcSAndroid Build Coastguard Workerthe null character pass:['\0'] at the end of the buffer.
45*436bf2bcSAndroid Build Coastguard Worker
46*436bf2bcSAndroid Build Coastguard WorkerThe *trace_seq_putc()* function puts a single character _c_ in the trace
47*436bf2bcSAndroid Build Coastguard Workersequence _s_.
48*436bf2bcSAndroid Build Coastguard Worker
49*436bf2bcSAndroid Build Coastguard WorkerThe *trace_seq_puts()* function puts a NULL terminated string _str_ in the
50*436bf2bcSAndroid Build Coastguard Workertrace sequence _s_.
51*436bf2bcSAndroid Build Coastguard Worker
52*436bf2bcSAndroid Build Coastguard WorkerThe *trace_seq_printf()* function puts a formated string _fmt _with
53*436bf2bcSAndroid Build Coastguard Workervariable arguments _..._ in the trace sequence _s_.
54*436bf2bcSAndroid Build Coastguard Worker
55*436bf2bcSAndroid Build Coastguard WorkerThe *trace_seq_vprintf()* function puts a formated string _fmt _with
56*436bf2bcSAndroid Build Coastguard Workerlist of arguments _args_ in the trace sequence _s_.
57*436bf2bcSAndroid Build Coastguard Worker
58*436bf2bcSAndroid Build Coastguard WorkerThe *trace_seq_do_printf()* function prints the buffer of trace sequence _s_ to
59*436bf2bcSAndroid Build Coastguard Workerthe standard output stdout.
60*436bf2bcSAndroid Build Coastguard Worker
61*436bf2bcSAndroid Build Coastguard WorkerThe *trace_seq_do_fprintf()* function prints the buffer of trace sequence _s_
62*436bf2bcSAndroid Build Coastguard Workerto the given file _fp_.
63*436bf2bcSAndroid Build Coastguard Worker
64*436bf2bcSAndroid Build Coastguard WorkerRETURN VALUE
65*436bf2bcSAndroid Build Coastguard Worker------------
66*436bf2bcSAndroid Build Coastguard WorkerBoth *trace_seq_putc()* and *trace_seq_puts()* functions return the number of
67*436bf2bcSAndroid Build Coastguard Workercharacters put in the trace sequence, or 0 in case of an error
68*436bf2bcSAndroid Build Coastguard Worker
69*436bf2bcSAndroid Build Coastguard WorkerBoth *trace_seq_printf()* and *trace_seq_vprintf()* functions return 0 if the
70*436bf2bcSAndroid Build Coastguard Workertrace oversizes the buffer's free space, the number of characters printed, or
71*436bf2bcSAndroid Build Coastguard Workera negative value in case of an error.
72*436bf2bcSAndroid Build Coastguard Worker
73*436bf2bcSAndroid Build Coastguard WorkerBoth *trace_seq_do_printf()* and *trace_seq_do_fprintf()* functions return the
74*436bf2bcSAndroid Build Coastguard Workernumber of printed characters, or -1 in case of an error.
75*436bf2bcSAndroid Build Coastguard Worker
76*436bf2bcSAndroid Build Coastguard WorkerEXAMPLE
77*436bf2bcSAndroid Build Coastguard Worker-------
78*436bf2bcSAndroid Build Coastguard Worker[source,c]
79*436bf2bcSAndroid Build Coastguard Worker--
80*436bf2bcSAndroid Build Coastguard Worker#include <event-parse.h>
81*436bf2bcSAndroid Build Coastguard Worker#include <trace-seq.h>
82*436bf2bcSAndroid Build Coastguard Worker...
83*436bf2bcSAndroid Build Coastguard Workerstruct trace_seq seq;
84*436bf2bcSAndroid Build Coastguard Workertrace_seq_init(&seq);
85*436bf2bcSAndroid Build Coastguard Worker...
86*436bf2bcSAndroid Build Coastguard Workervoid foo_seq_print(struct trace_seq *tseq, char *format, ...)
87*436bf2bcSAndroid Build Coastguard Worker{
88*436bf2bcSAndroid Build Coastguard Worker	va_list ap;
89*436bf2bcSAndroid Build Coastguard Worker	va_start(ap, format);
90*436bf2bcSAndroid Build Coastguard Worker	if (trace_seq_vprintf(tseq, format, ap) <= 0) {
91*436bf2bcSAndroid Build Coastguard Worker		/* Failed to print in the trace sequence */
92*436bf2bcSAndroid Build Coastguard Worker	}
93*436bf2bcSAndroid Build Coastguard Worker	va_end(ap);
94*436bf2bcSAndroid Build Coastguard Worker}
95*436bf2bcSAndroid Build Coastguard Worker
96*436bf2bcSAndroid Build Coastguard Workertrace_seq_reset(&seq);
97*436bf2bcSAndroid Build Coastguard Worker
98*436bf2bcSAndroid Build Coastguard Workerchar *str = " MAN page example";
99*436bf2bcSAndroid Build Coastguard Workerif (trace_seq_puts(&seq, str) != strlen(str)) {
100*436bf2bcSAndroid Build Coastguard Worker	/* Failed to put str in the trace sequence */
101*436bf2bcSAndroid Build Coastguard Worker}
102*436bf2bcSAndroid Build Coastguard Workerif (trace_seq_putc(&seq, ':') != 1) {
103*436bf2bcSAndroid Build Coastguard Worker	/* Failed to put ':' in the trace sequence */
104*436bf2bcSAndroid Build Coastguard Worker}
105*436bf2bcSAndroid Build Coastguard Workerif (trace_seq_printf(&seq, " trace sequence: %d", 1) <= 0) {
106*436bf2bcSAndroid Build Coastguard Worker	/* Failed to print in the trace sequence */
107*436bf2bcSAndroid Build Coastguard Worker}
108*436bf2bcSAndroid Build Coastguard Workerfoo_seq_print( &seq, "  %d\n", 2);
109*436bf2bcSAndroid Build Coastguard Worker
110*436bf2bcSAndroid Build Coastguard Workertrace_seq_terminate(&seq);
111*436bf2bcSAndroid Build Coastguard Worker...
112*436bf2bcSAndroid Build Coastguard Worker
113*436bf2bcSAndroid Build Coastguard Workerif (trace_seq_do_printf(&seq) < 0 ) {
114*436bf2bcSAndroid Build Coastguard Worker	/* Failed to print the sequence buffer to the standard output */
115*436bf2bcSAndroid Build Coastguard Worker}
116*436bf2bcSAndroid Build Coastguard WorkerFILE *fp = fopen("trace.txt", "w");
117*436bf2bcSAndroid Build Coastguard Workerif (trace_seq_do_fprintf(&seq, fp) < 0 ) [
118*436bf2bcSAndroid Build Coastguard Worker	/* Failed to print the sequence buffer to the trace.txt file */
119*436bf2bcSAndroid Build Coastguard Worker}
120*436bf2bcSAndroid Build Coastguard Worker
121*436bf2bcSAndroid Build Coastguard Workertrace_seq_destroy(&seq);
122*436bf2bcSAndroid Build Coastguard Worker...
123*436bf2bcSAndroid Build Coastguard Worker--
124*436bf2bcSAndroid Build Coastguard Worker
125*436bf2bcSAndroid Build Coastguard WorkerFILES
126*436bf2bcSAndroid Build Coastguard Worker-----
127*436bf2bcSAndroid Build Coastguard Worker[verse]
128*436bf2bcSAndroid Build Coastguard Worker--
129*436bf2bcSAndroid Build Coastguard Worker*event-parse.h*
130*436bf2bcSAndroid Build Coastguard Worker	Header file to include in order to have access to the library APIs.
131*436bf2bcSAndroid Build Coastguard Worker*trace-seq.h*
132*436bf2bcSAndroid Build Coastguard Worker	Header file to include in order to have access to trace sequences related APIs.
133*436bf2bcSAndroid Build Coastguard Worker*-ltraceevent*
134*436bf2bcSAndroid Build Coastguard Worker	Linker switch to add when building a program that uses the library.
135*436bf2bcSAndroid Build Coastguard Worker--
136*436bf2bcSAndroid Build Coastguard Worker
137*436bf2bcSAndroid Build Coastguard WorkerSEE ALSO
138*436bf2bcSAndroid Build Coastguard Worker--------
139*436bf2bcSAndroid Build Coastguard Worker*libtraceevent*(3), *trace-cmd*(1)
140*436bf2bcSAndroid Build Coastguard Worker
141*436bf2bcSAndroid Build Coastguard WorkerAUTHOR
142*436bf2bcSAndroid Build Coastguard Worker------
143*436bf2bcSAndroid Build Coastguard Worker[verse]
144*436bf2bcSAndroid Build Coastguard Worker--
145*436bf2bcSAndroid Build Coastguard Worker*Steven Rostedt* <[email protected]>, author of *libtraceevent*.
146*436bf2bcSAndroid Build Coastguard Worker*Tzvetomir Stoyanov* <[email protected]>, author of this man page.
147*436bf2bcSAndroid Build Coastguard Worker--
148*436bf2bcSAndroid Build Coastguard WorkerREPORTING BUGS
149*436bf2bcSAndroid Build Coastguard Worker--------------
150*436bf2bcSAndroid Build Coastguard WorkerReport bugs to  <[email protected]>
151*436bf2bcSAndroid Build Coastguard Worker
152*436bf2bcSAndroid Build Coastguard WorkerLICENSE
153*436bf2bcSAndroid Build Coastguard Worker-------
154*436bf2bcSAndroid Build Coastguard Workerlibtraceevent is Free Software licensed under the GNU LGPL 2.1
155*436bf2bcSAndroid Build Coastguard Worker
156*436bf2bcSAndroid Build Coastguard WorkerRESOURCES
157*436bf2bcSAndroid Build Coastguard Worker---------
158*436bf2bcSAndroid Build Coastguard Workerhttps://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/
159