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