| libtracefs(3) |
| ============= |
| |
| NAME |
| ---- |
| tracefs_file_exists, tracefs_dir_exists, |
| tracefs_instance_get_file, tracefs_instance_get_dir - Work with files directories in tracing instances. |
| |
| SYNOPSIS |
| -------- |
| [verse] |
| -- |
| *#include <tracefs.h>* |
| |
| bool *tracefs_file_exists*(struct tracefs_instance pass:[*]_instance_, char pass:[*]_name_); |
| bool *tracefs_dir_exists*(struct tracefs_instance pass:[*]_instance_, char pass:[*]_name_); |
| char pass:[*]*tracefs_instance_get_file*(struct tracefs_instance pass:[*]_instance_, const char pass:[*]_file_); |
| char pass:[*]*tracefs_instance_get_dir*(struct tracefs_instance pass:[*]_instance_); |
| |
| -- |
| |
| DESCRIPTION |
| ----------- |
| This set of APIs can be used to work with trace files in all trace instances. |
| Each of these APIs take an _instance_ argument, that can be NULL to act |
| on the top level instance. Otherwise, it acts on an instance created with |
| *tracefs_insance_create*(3) |
| |
| The *tracefs_file_exists()* function checks if a file with _name_ exists in _instance_. |
| |
| The *tracefs_dir_exists()* function checks if a directory with _name_ exists in _instance_. |
| |
| The *tracefs_instance_get_file()* function returns the full path of the file |
| with given _name_ in _instance_. Note, it does not check if the file exists in |
| the instance. |
| |
| The *tracefs_instance_get_dir()* function returns the full path of the directory |
| with given _name_ in _instance_. Note, it does not check if the directory exists |
| in the instance. |
| |
| RETURN VALUE |
| ------------ |
| The *tracefs_file_exists()* and *tracefs_dir_exists()* functions return true if the |
| file / directory exist in the given instance or false if it does not exist. |
| |
| The *tracefs_instance_get_file()* and *tracefs_instance_get_dir()* functions return |
| a string or NULL in case of an error. The returned string must be freed with |
| *tracefs_put_tracing_file()*. |
| |
| EXAMPLE |
| ------- |
| [source,c] |
| -- |
| #include <tracefs.h> |
| |
| struct tracefs_instance *inst = tracefs_instance_create("foo"); |
| if (!inst) { |
| /* Error creating a new trace instance */ |
| ... |
| } |
| |
| if (tracefs_file_exists(inst,"trace_clock")) { |
| /* The instance foo supports trace clock */ |
| char *path, *clock; |
| int size; |
| |
| path = = tracefs_instance_get_file(inst, "trace_clock") |
| if (!path) { |
| /* Error getting the path to trace_clock file in instance foo */ |
| ... |
| } |
| ... |
| tracefs_put_tracing_file(path); |
| |
| clock = tracefs_instance_file_read(inst, "trace_clock", &size); |
| if (!clock) { |
| /* Failed to read trace_clock file in instance foo */ |
| ... |
| } |
| ... |
| free(clock); |
| |
| if (tracefs_instance_file_write(inst, "trace_clock", "global") != strlen("global")) { |
| /* Failed to set gloabl trace clock in instance foo */ |
| ... |
| } |
| } else { |
| /* The instance foo does not support trace clock */ |
| } |
| |
| if (tracefs_dir_exists(inst,"options")) { |
| /* The instance foo supports trace options */ |
| char *path = tracefs_instance_get_file(inst, "options"); |
| if (!path) { |
| /* Error getting the path to options directory in instance foo */ |
| ... |
| } |
| |
| tracefs_put_tracing_file(path); |
| } else { |
| /* The instance foo does not support trace options */ |
| } |
| |
| ... |
| |
| if (tracefs_instance_is_new(inst)) |
| tracefs_instance_destroy(inst); |
| else |
| tracefs_instance_free(inst); |
| ... |
| |
| long long int res; |
| if (tracefs_instance_file_read_number(NULL, "tracing_on", &res) == 0) { |
| if (res == 0) { |
| /* tracing is disabled in the top instance */ |
| } else if (res == 1) { |
| /* tracing is enabled in the top instance */ |
| } else { |
| /* Unknown tracing state of the top instance */ |
| } |
| } else { |
| /* Failed to read integer from tracing_on file */ |
| } |
| |
| ... |
| |
| int fd; |
| fd = tracefs_instance_file_open(NULL, "tracing_on", O_WRONLY); |
| if (fd >= 0) { |
| /* Got file descriptor to the tracing_on file from the top instance for writing */ |
| ... |
| close(fd); |
| } |
| -- |
| 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). |