# tracefs_print_init

## NAME



           tracefs_print_init, tracefs_print_close, tracefs_printf,
           tracefs_vprintf - Open, close and write formated strings in the
           trace buffer.
    


## SYNOPSIS



           **#include <tracefs.h>**
    
           int **tracefs_print_init**(struct tracefs_instance *_instance_);
           int **tracefs_printf**(struct tracefs_instance *_instance_ , const char *_fmt_ , _..._);
           int **tracefs_vprintf**(struct tracefs_instance *_instance_ , const char *_fmt_ , va_list _ap_);
           void **tracefs_print_close**(struct tracefs_instance *_instance_);
    


## DESCRIPTION



           Set of functions to write formated strings in the trace buffer.
           See Documentation/trace/ftrace.rst from the Linux kernel tree for
           more information about writing data from user space in the trace
           buffer. All these APIs have _instance_ as a first argument. If NULL
           is passed as _instance_ , the top trace instance is used.
    
           The **tracefs_print_init()** function initializes the library for
           writing into the trace buffer of the selected _instance_. It is not
           mandatory to call this API before writing strings, any of the
           printf APIs will call it automatically, if the library is not yet
           initialized. But calling **tracefs_print_init()** in advance will
           speed up the writing.
    
           The **tracefs_printf()** function writes a formatted string in the
           trace buffer of the selected _instance_. The _fmt_ argument is a
           string in printf format, followed by variable arguments _..._.
    
           The **tracefs_vprintf()** function writes a formatted string in the
           trace buffer of the selected _instance_. The _fmt_ argument is a
           string in printf format, followed by list _ap_ of arguments.
    
           The **tracefs_print_close()** function closes the resources, used by
           the library for writing in the trace buffer of the selected
           instance.
    


## RETURN VALUE



           The **tracefs_print_init()** , **tracefs_printf()** , and **tracefs_vprintf()**
           functions return 0 if the operation is successful, or -1 in case
           of an error.
    


## EXAMPLE



               #include <tracefs.h>
    
               if (tracefs_print_init(NULL) < 0) {
                /* Failed to initialize the library for writing in the trace buffer of the top trace instance */
               }
    
               void foo_print(char *format, ...)
               {
                       va_list ap;
                       va_start(ap, format);
                       if (tracefs_vprintf(NULL, format, ap) < 0) {
                               /* Failed to print in the trace buffer */
                       }
                       va_end(ap);
               }
    
               void foo_print_string(char *message)
               {
                       if (tracefs_printf(NULL, "Message from user space: %s", message) < 0) {
                               /* Failed to print in the trace buffer */
                       }
               }
    
               tracefs_print_close();
    


## FILES



               **tracefs.h**
                       Header file to include in order to have access to the library APIs.
               **-ltracefs**
                       Linker switch to add when building a program that uses the library.
    


## LICENSE



           libtracefs is Free Software licensed under the GNU LGPL 2.1
    


## RESOURCES



           **https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/ **
    


## COPYING



           Copyright (C) 2021 VMware, Inc. Free use of this software is
           granted under the terms of the GNU Public License (GPL).
    


## NOTES



            1. rostedt@goodmis.org
               mailto:rostedt@goodmis.org
    
            2. tz.stoyanov@gmail.com
               mailto:tz.stoyanov@gmail.com
    
            3. linux-trace-devel@vger.kernel.org
               mailto:linux-trace-devel@vger.kernel.org
    


* * *