Provided by: libtracefs-doc_1.6.4-1ubuntu1_all bug

NAME

       tracefs_instance_create, tracefs_instance_destroy, tracefs_instance_alloc,
       tracefs_instance_free, tracefs_instance_is_new, tracefs_instances - Manage trace
       instances.

SYNOPSIS

       #include <tracefs.h>

       struct tracefs_instance *tracefs_instance_create(const char *name);
       int tracefs_instance_destroy(struct tracefs_instance *instance);
       struct tracefs_instance *tracefs_instance_alloc(const char *tracing_dir, const char *name);
       void tracefs_instance_free(struct tracefs_instance *instance);
       bool tracefs_instance_is_new(struct tracefs_instance *instance);
       char **tracefs_instances(const char *regex);

DESCRIPTION

       This set of functions can be used to manage trace instances. A trace instance is a sub
       buffer used by the Linux tracing system. Given a unique name, the events enabled in an
       instance do not affect the main tracing system, nor other instances, as events enabled in
       the main tracing system or other instances do not affect the given instance.

       The tracefs_instance_create() function allocates and initializes a new tracefs_instance
       structure and returns it. If the instance with name does not yet exist in the system, it
       will be created. The name could be NULL, then the new tracefs_instance structure is
       initialized for the top instance. Note that the top instance cannot be created in the
       system, if it does not exist.

       The tracefs_instance_destroy() removes the instance from the system, but does not free the
       structure. tracefs_instance_free() must still be called on instance.

       The tracefs_instance_alloc()* function allocates a new tracefs_instance structure for
       existing trace instance. If the instance does not exist in the system, the function fails.
       The tracing_dir parameter points to the system trace directory. It can be NULL, then
       default system trace directory is used. This parameter is useful to allocate instances to
       trace directories, copied from another machine. The name is the name of the instance, or
       NULL for the top instance in the given tracing_dir.

       The tracefs_instance_free() function frees the tracefs_instance structure, without
       removing the trace instance from the system.

       The tracefs_instance_is_new() function checks if the given instance is newly created by
       tracefs_instance_create(), or it has been in the system before that.

       The tracefs_instances() function returns a list of instances that exist in the system that
       match the regular expression regex. If regex is NULL, then it will match all instances
       that exist. The returned list must be freed with tracefs_list_free(3). Note, if no
       instances are found an empty list is returned and that too needs to be free with
       tracefs_list_free(3).

RETURN VALUE

       The tracefs_instance_create() and tracefs_instance_alloc() functions return a pointer to a
       newly allocated tracefs_instance structure. It must be freed with tracefs_instance_free().

       The tracefs_instance_destroy() function returns 0 if it succeeds to remove the instance,
       otherwise it returns -1 if the instance does not exist or it fails to remove it.

       The tracefs_instance_is_new() function returns true if the tracefs_instance_create() that
       allocated instance also created the trace instance in the system, or false if the trace
       instance already existed in the system when instance was allocated by
       tracefs_instance_create() or tracefs_instance_alloc().

       The tracefs_instances() returns a list of instance names that exist on the system. The
       list must be freed with tracefs_list_free(3). An empty list is returned if no instance
       exists that matches regex, and this needs to be freed with tracefs_list_free(3) as well.
       NULL is returned on error.

EXAMPLE

           #include <tracefs.h>

           struct tracefs_instance *inst = tracefs_instance_create("foo");
                   if (!inst) {
                           /* Error creating a new trace instance */
                           ...
                   }

                   ...

                   if (tracefs_instance_is_new(inst))
                           tracefs_instance_destroy(inst);
                   tracefs_instance_free(inst);
           ...

           struct tracefs_instance *inst = tracefs_instance_alloc(NULL, "bar");
                   if (!inst) {
                           /* Error allocating 'bar' trace instance */
                           ...
                   }

                   ...

                   tracefs_instance_free(inst);

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.

SEE ALSO

       libtracefs(3), libtraceevent(3), trace-cmd(1)

AUTHOR

           Steven Rostedt <rostedt@goodmis.org[1]>
           Tzvetomir Stoyanov <tz.stoyanov@gmail.com[2]>

REPORTING BUGS

       Report bugs to <linux-trace-devel@vger.kernel.org[3]>

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