1*287e80b3SSadaf Ebrahimilibtracefs(3) 2*287e80b3SSadaf Ebrahimi============= 3*287e80b3SSadaf Ebrahimi 4*287e80b3SSadaf EbrahimiNAME 5*287e80b3SSadaf Ebrahimi---- 6*287e80b3SSadaf Ebrahimitracefs_print_init, tracefs_print_close, tracefs_printf, tracefs_vprintf - 7*287e80b3SSadaf EbrahimiOpen, close and write formated strings in the trace buffer. 8*287e80b3SSadaf Ebrahimi 9*287e80b3SSadaf EbrahimiSYNOPSIS 10*287e80b3SSadaf Ebrahimi-------- 11*287e80b3SSadaf Ebrahimi[verse] 12*287e80b3SSadaf Ebrahimi-- 13*287e80b3SSadaf Ebrahimi*#include <tracefs.h>* 14*287e80b3SSadaf Ebrahimi 15*287e80b3SSadaf Ebrahimiint *tracefs_print_init*(struct tracefs_instance pass:[*]_instance_); 16*287e80b3SSadaf Ebrahimiint *tracefs_printf*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_fmt_, _..._); 17*287e80b3SSadaf Ebrahimiint *tracefs_vprintf*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_fmt_, va_list _ap_); 18*287e80b3SSadaf Ebrahimivoid *tracefs_print_close*(struct tracefs_instance pass:[*]_instance_); 19*287e80b3SSadaf Ebrahimi 20*287e80b3SSadaf Ebrahimi-- 21*287e80b3SSadaf Ebrahimi 22*287e80b3SSadaf EbrahimiDESCRIPTION 23*287e80b3SSadaf Ebrahimi----------- 24*287e80b3SSadaf EbrahimiSet of functions to write formated strings in the trace buffer. 25*287e80b3SSadaf EbrahimiSee Documentation/trace/ftrace.rst from the Linux kernel tree for more information about writing 26*287e80b3SSadaf Ebrahimidata from user space in the trace buffer. All these APIs have _instance_ as a first argument. If 27*287e80b3SSadaf EbrahimiNULL is passed as _instance_, the top trace instance is used. 28*287e80b3SSadaf Ebrahimi 29*287e80b3SSadaf EbrahimiThe *tracefs_print_init()* function initializes the library for writing into the trace buffer of 30*287e80b3SSadaf Ebrahimithe selected _instance_. It is not mandatory to call this API before writing strings, any of 31*287e80b3SSadaf Ebrahimithe printf APIs will call it automatically, if the library is not yet initialized. But calling 32*287e80b3SSadaf Ebrahimi*tracefs_print_init()* in advance will speed up the writing. 33*287e80b3SSadaf Ebrahimi 34*287e80b3SSadaf EbrahimiThe *tracefs_printf()* function writes a formatted string in the trace buffer of the selected 35*287e80b3SSadaf Ebrahimi_instance_. The _fmt_ argument is a string in printf format, followed by variable arguments _..._. 36*287e80b3SSadaf Ebrahimi 37*287e80b3SSadaf EbrahimiThe *tracefs_vprintf()* function writes a formatted string in the trace buffer of the selected 38*287e80b3SSadaf Ebrahimi_instance_. The _fmt_ argument is a string in printf format, followed by list _ap_ of arguments. 39*287e80b3SSadaf Ebrahimi 40*287e80b3SSadaf EbrahimiThe *tracefs_print_close()* function closes the resources, used by the library for writing in 41*287e80b3SSadaf Ebrahimithe trace buffer of the selected instance. 42*287e80b3SSadaf Ebrahimi 43*287e80b3SSadaf EbrahimiRETURN VALUE 44*287e80b3SSadaf Ebrahimi------------ 45*287e80b3SSadaf EbrahimiThe *tracefs_print_init()*, *tracefs_printf()*, and *tracefs_vprintf()* functions return 0 if 46*287e80b3SSadaf Ebrahimithe operation is successful, or -1 in case of an error. 47*287e80b3SSadaf Ebrahimi 48*287e80b3SSadaf EbrahimiEXAMPLE 49*287e80b3SSadaf Ebrahimi------- 50*287e80b3SSadaf Ebrahimi[source,c] 51*287e80b3SSadaf Ebrahimi-- 52*287e80b3SSadaf Ebrahimi#include <tracefs.h> 53*287e80b3SSadaf Ebrahimi 54*287e80b3SSadaf Ebrahimiif (tracefs_print_init(NULL) < 0) { 55*287e80b3SSadaf Ebrahimi /* Failed to initialize the library for writing in the trace buffer of the top trace instance */ 56*287e80b3SSadaf Ebrahimi} 57*287e80b3SSadaf Ebrahimi 58*287e80b3SSadaf Ebrahimivoid foo_print(char *format, ...) 59*287e80b3SSadaf Ebrahimi{ 60*287e80b3SSadaf Ebrahimi va_list ap; 61*287e80b3SSadaf Ebrahimi va_start(ap, format); 62*287e80b3SSadaf Ebrahimi if (tracefs_vprintf(NULL, format, ap) < 0) { 63*287e80b3SSadaf Ebrahimi /* Failed to print in the trace buffer */ 64*287e80b3SSadaf Ebrahimi } 65*287e80b3SSadaf Ebrahimi va_end(ap); 66*287e80b3SSadaf Ebrahimi} 67*287e80b3SSadaf Ebrahimi 68*287e80b3SSadaf Ebrahimivoid foo_print_string(char *message) 69*287e80b3SSadaf Ebrahimi{ 70*287e80b3SSadaf Ebrahimi if (tracefs_printf(NULL, "Message from user space: %s", message) < 0) { 71*287e80b3SSadaf Ebrahimi /* Failed to print in the trace buffer */ 72*287e80b3SSadaf Ebrahimi } 73*287e80b3SSadaf Ebrahimi} 74*287e80b3SSadaf Ebrahimi 75*287e80b3SSadaf Ebrahimitracefs_print_close(); 76*287e80b3SSadaf Ebrahimi-- 77*287e80b3SSadaf EbrahimiFILES 78*287e80b3SSadaf Ebrahimi----- 79*287e80b3SSadaf Ebrahimi[verse] 80*287e80b3SSadaf Ebrahimi-- 81*287e80b3SSadaf Ebrahimi*tracefs.h* 82*287e80b3SSadaf Ebrahimi Header file to include in order to have access to the library APIs. 83*287e80b3SSadaf Ebrahimi*-ltracefs* 84*287e80b3SSadaf Ebrahimi Linker switch to add when building a program that uses the library. 85*287e80b3SSadaf Ebrahimi-- 86*287e80b3SSadaf Ebrahimi 87*287e80b3SSadaf EbrahimiSEE ALSO 88*287e80b3SSadaf Ebrahimi-------- 89*287e80b3SSadaf Ebrahimi*libtracefs*(3), 90*287e80b3SSadaf Ebrahimi*libtraceevent*(3), 91*287e80b3SSadaf Ebrahimi*trace-cmd*(1), 92*287e80b3SSadaf EbrahimiDocumentation/trace/ftrace.rst from the Linux kernel tree 93*287e80b3SSadaf Ebrahimi 94*287e80b3SSadaf EbrahimiAUTHOR 95*287e80b3SSadaf Ebrahimi------ 96*287e80b3SSadaf Ebrahimi[verse] 97*287e80b3SSadaf Ebrahimi-- 98*287e80b3SSadaf Ebrahimi*Steven Rostedt* <[email protected]> 99*287e80b3SSadaf Ebrahimi*Tzvetomir Stoyanov* <[email protected]> 100*287e80b3SSadaf Ebrahimi-- 101*287e80b3SSadaf EbrahimiREPORTING BUGS 102*287e80b3SSadaf Ebrahimi-------------- 103*287e80b3SSadaf EbrahimiReport bugs to <[email protected]> 104*287e80b3SSadaf Ebrahimi 105*287e80b3SSadaf EbrahimiLICENSE 106*287e80b3SSadaf Ebrahimi------- 107*287e80b3SSadaf Ebrahimilibtracefs is Free Software licensed under the GNU LGPL 2.1 108*287e80b3SSadaf Ebrahimi 109*287e80b3SSadaf EbrahimiRESOURCES 110*287e80b3SSadaf Ebrahimi--------- 111*287e80b3SSadaf Ebrahimihttps://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/ 112*287e80b3SSadaf Ebrahimi 113*287e80b3SSadaf EbrahimiCOPYING 114*287e80b3SSadaf Ebrahimi------- 115*287e80b3SSadaf EbrahimiCopyright \(C) 2021 VMware, Inc. Free use of this software is granted under 116*287e80b3SSadaf Ebrahimithe terms of the GNU Public License (GPL). 117