tracefs_instance_create(3) — Linux manual page

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | EXAMPLE | FILES | SEE ALSO | AUTHOR | REPORTING BUGS | LICENSE | RESOURCES | COPYING | NOTES | COLOPHON

LIBTRACEFS(3)               libtracefs Manual              LIBTRACEFS(3)

NAME         top

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

SYNOPSIS         top

       #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);
       void tracefs_instance_reset(struct tracefs_instance *instance);

DESCRIPTION         top

       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).

       The tracefs_instance_reset() function resets the given instance
       to its default state.

RETURN VALUE         top

       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         top

           #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_reset(inst);
                   tracefs_instance_free(inst);

FILES         top

           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         top

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

AUTHOR         top

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

REPORTING BUGS         top

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

LICENSE         top

       libtracefs is Free Software licensed under the GNU LGPL 2.1

RESOURCES         top

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

COPYING         top

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

NOTES         top

        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

COLOPHON         top

       This page is part of the libtracefs (Linux kernel trace file
       system library) project.  Information about the project can be
       found at ⟨https://www.trace-cmd.org/⟩.  If you have a bug report
       for this manual page, see ⟨https://www.trace-cmd.org/⟩.  This
       page was obtained from the project's upstream Git repository
       ⟨https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git⟩ on
       2023-12-22.  (At that time, the date of the most recent commit
       that was found in the repository was 2023-07-05.)  If you
       discover any rendering problems in this HTML version of the page,
       or you believe there is a better or more up-to-date source for
       the page, or you have corrections or improvements to the
       information in this COLOPHON (which is not part of the original
       manual page), send a mail to man-pages@man7.org

libtracefs 1.7.0               12/22/2023                  LIBTRACEFS(3)