NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | EXAMPLE | FILES | SEE ALSO | AUTHOR | REPORTING BUGS | LICENSE | RESOURCES | COPYING | NOTES | COLOPHON |
|
|
LIBTRACEFS(3) libtracefs Manual LIBTRACEFS(3)
tracefs_file_exists, tracefs_dir_exists, tracefs_instance_get_file, tracefs_instance_get_dir - Work with files directories in tracing instances.
#include <tracefs.h> bool tracefs_file_exists(struct tracefs_instance *instance, char *name); bool tracefs_dir_exists(struct tracefs_instance *instance, char *name); char *tracefs_instance_get_file(struct tracefs_instance *instance, const char *file); char *tracefs_instance_get_dir(struct tracefs_instance *instance);
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.
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().
#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); }
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.
libtracefs(3), libtraceevent(3), trace-cmd(1)
Steven Rostedt <rostedt@goodmis.org[1]> Tzvetomir Stoyanov <tz.stoyanov@gmail.com[2]>
Report bugs to <linux-trace-devel@vger.kernel.org[3]>
libtracefs is Free Software licensed under the GNU LGPL 2.1
https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/
Copyright (C) 2020 VMware, Inc. Free use of this software is granted under the terms of the GNU Public License (GPL).
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
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
2024-06-14. (At that time, the date of the most recent commit
that was found in the repository was 2024-05-17.) 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)
Pages that refer to this page: kbuffer_alloc(3), tracefs_event_get_file(3)