| libtracefs(3) |
| ============= |
| |
| NAME |
| ---- |
| tracefs_instance_create, tracefs_instance_destroy, tracefs_instance_alloc, tracefs_instance_free, |
| tracefs_instance_is_new, tracefs_instances - Manage trace instances. |
| |
| SYNOPSIS |
| -------- |
| [verse] |
| -- |
| *#include <tracefs.h>* |
| |
| struct tracefs_instance pass:[*]*tracefs_instance_create*(const char pass:[*]_name_); |
| int *tracefs_instance_destroy*(struct tracefs_instance pass:[*]_instance_); |
| struct tracefs_instance pass:[*]*tracefs_instance_alloc*(const char pass:[*]_tracing_dir_, const char pass:[*]_name_); |
| void *tracefs_instance_free*(struct tracefs_instance pass:[*]_instance_); |
| bool *tracefs_instance_is_new*(struct tracefs_instance pass:[*]_instance_); |
| char pass:[**]*tracefs_instances*(const char pass:[*]_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 |
| ------- |
| [source,c] |
| -- |
| #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 |
| ----- |
| [verse] |
| -- |
| *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 |
| ------ |
| [verse] |
| -- |
| *Steven Rostedt* <rostedt@goodmis.org> |
| *Tzvetomir Stoyanov* <tz.stoyanov@gmail.com> |
| -- |
| REPORTING BUGS |
| -------------- |
| Report bugs to <linux-trace-devel@vger.kernel.org> |
| |
| 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). |