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 * 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 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* *Tzvetomir Stoyanov* -- REPORTING BUGS -------------- Report bugs to 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).