# tracefs_local_events

## NAME



           tracefs_local_events, tracefs_local_events_system,
           tracefs_fill_local_events, tracefs_load_cmdlines,
           tracefs_load_headers - Initialize a tep handler with trace events
           from the local system.
    


## SYNOPSIS



           **#include <tracefs.h>**
    
           struct tep_handle * **tracefs_local_events**(const char *_tracing_dir_);
           struct tep_handle * **tracefs_local_events_system**(const char *_tracing_dir_ , const char * const *_sys_names_);
           int **tracefs_fill_local_events**(const char *_tracing_dir_ , struct tep_handle *_tep_ , int *_parsing_failures_);
           int **tracefs_load_cmdlines**(const char *_tracing_dir_ , struct tep_handle *_tep_);
           int **tracefs_load_headers**(const char *_tracing_dir_ , struct tep_handle *_tep_);
    


## DESCRIPTION



           Functions for initializing a tep handler with trace events from
           the local system.
    
           The **tracefs_local_events()** function allocates a new _tep_ handler
           and initializes it with events from all trace systems, located in
           the given _tracing_dir_ directory. This could be NULL or the
           location of the tracefs mount point for the trace systems of the
           local machine, or it may be a path to a copy of the tracefs
           directory from another machine.
    
           The **tracefs_local_events_system()** function allocates a new _tep_
           handler and initializes it with events from specified trace
           systems _sys_names_ , located in the given _tracing_dir_ directory.
           This could be NULL or the location of the tracefs mount point for
           the trace systems of the local machine, or it may be a path to a
           copy of the tracefs directory from another machine. The _sys_names_
           argument is an array of trace system names, that will be used for
           _tep_ handler initialization. The last element in that array must be
           a NULL pointer.
    
           The **tracefs_fill_local_events()** function initializes already
           allocated _tep_ handler with events from all trace systems, located
           in the given _tracing_dir_ directory. This could be NULL or the
           location of the tracefs mount point for the trace systems of the
           local machine, or it may be a path to a copy of the tracefs
           directory from another machine. The _tep_ argument must be a pointer
           to already allocated tep handler, that is going to be initialized.
           The _parsing_failures_ argument could be NULL or a pointer to an
           integer, where the number of failures while parsing the event
           files are returned.
    
           The above functions will also load the mappings between pids and
           the process command line names. In some cases the _tep_ handle is
           created with one of the above before tracing begins. As the
           mappings get updated during the trace, there may be a need to read
           the mappings again after the trace. The **tracefs_load_cmdlines()**
           does just that. The _tracing_dir_ is the directory of the mount
           point to load from, or NULL to use the mount point of the tracefs
           file system.
    
           The **tracefs_load_headers()** will reade the "header_page" of the
           events directory that will update the _tep_ handle with information
           on how to parse the tracing ring buffer sub-buffer.
    


## RETURN VALUE



           The **tracefs_local_events()** and **tracefs_local_events_system()**
           functions return pointer to allocated and initialized _tep_ handler,
           or NULL in case of an error. The returned _tep_ handler must be
           freed with tep_free(3).
    
           The **tracefs_fill_local_events()** function returns -1 in case of an
           error or 0 otherwise.
    
           The **tracefs_load_cmdlines()** function returns -1 in case of an
           error, or 0 otherwise.
    


## EXAMPLE



               #include <tracefs.h>
    
               struct tep_handle *tep;
               ...
                       tep = tracefs_local_events(NULL);
                       if (!tep) {
                               /* Failed to initialise tep handler with local events from top instance */
                               ...
                       }
               ...
                       tep_free(tep);
               ...
                       const char *systems[] = {"ftrace", "irq", NULL};
                       tep = tracefs_local_events_system(NULL, systems);
                       if (!tep) {
                               /* Failed to initialise tep handler with local events from
                                * ftrace and irq systems in top instance.
                                */
                               ...
                       }
               ...
                       tep_free(tep);
               ...
                       int parsing_failures;
                       tep = tep_alloc();
                       if (!tep) {
                               /* Failed to allocate a tep handler */
                               ...
                       }
                       if (tracefs_fill_local_events(NULL, tep, &parsing_failures) < 0) {
                               /* Failed to initialise tep handler with local events from top instance */
                       }
                       tracefs_load_cmdlines(NULL, tep);
               ...
                       tep_free(tep);
    


## 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) 2020 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
    


* * *