LIBTRACEFS(3)
π NAME π
okay so welcome to the libtracefs(3) manual page, bestie π this one is all about finding and setting the locations of the trace directory and the files inside it. The whole squad is here: tracefs_get_tracing_file, tracefs_put_tracing_file, tracefs_tracing_dir, tracefs_debug_dir, tracefs_set_tracing_dir, and tracefs_tracing_dir_is_mounted β literally finding and setting locations of trace directory and files, periodt β¨
πΈ SYNOPSIS πΈ
#include <tracefs.h>
char *tracefs_get_tracing_file(const char *name);
void tracefs_put_tracing_file(char *name);
const char *tracefs_tracing_dir(void);
const char *tracefs_debug_dir(void);
int tracefs_set_tracing_dir(char *tracing_dir)
int tracefs_tracing_dir_is_mounted(bool mount, const char **path);
π¦ DESCRIPTION π¦
This set of APIs is your little map to the full path of the trace file system mount point and the trace files chilling inside it πΊοΈβ¨
The tracefs_set_tracing_dir() function sets a custom location for the systemβs tracing directory mount point. Usually the library auto-detects it using the information from the /proc/mounts file. Use this API only if the mount point is not standard and cannot be detected by the library β like, donβt just use it for funsies, bestie. The tracing_dir argument can be NULL; in that case the custom location is deleted and the library auto-detection logic is used again. Slay, back to default π
The tracefs_get_tracing_file() function returns the full path of the file with the given name in the trace file system. Hereβs the tea though: it works only with files in the tracefs main directory, and it is not trace instance aware. It is recommended to use tracefs_instance_get_file() and tracefs_instance_get_dir() instead. The returned string must be freed with tracefs_put_tracing_file() π«Ά
The tracefs_put_tracing_file() function frees the trace file name returned by tracefs_get_tracing_file(). Thatβs its whole job and it ate, no notes π
The tracefs_tracing_dir() function returns the full path to the trace file system. In the first function call, the mount point of the tracing file system is located, cached, and returned. It will mount it if it is not mounted. On any subsequent call, the cached path is returned. The return string must not be freed. Do not free it, okay? Thatβs the rule π
The tracefs_debug_dir() is similar to tracefs_tracing_dir() except that it will return where the debugfs file system is mounted. If it is not mounted, it will try to mount it. The return string must not be freed. Same vibe, different filesystem, iconic π¦
tracefs_tracing_dir_is_mounted() returns 1 if the tracing directory is already mounted and 0 if it is not. If mount is true, it will try to mount it if it is not, and returns 0 if it successfully mounted it and -1 if it did not. If path is set, it will be assigned to the path where it mounted it. path is internal and should not be freed. Internal means hands off, bestie π
π₯ RETURN VALUE π₯
tracefs_set_tracing_dir()β returns0on success,-1otherwise.tracefs_get_tracing_file()β returns a string orNULLin case of an error. The returned string must be freed withtracefs_put_tracing_file().tracefs_tracing_dir()β returns a constant string orNULLin case of an error. The returned string must not be freed.tracefs_debug_dir()β returns a constant string orNULLin case of an error. The returned string must not be freed.tracefs_tracing_dir_is_mounted()β returns1if the tracing directory is already mounted,0if it is not, and-1on error.
β EXAMPLE β
okay hereβs the little demo, copied exactly because we do not mess with code in this house π
#include <tracefs.h>
...
char *trace_on = tracefs_get_tracing_file("tracing_on");
if (trace_on) {
...
tracefs_put_tracing_file(trace_on);
}
...
const char *trace_dir = tracefs_tracing_dir();
π FILES π
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 π
π AUTHOR π
Steven Rostedt <rostedt@goodmis.org[1]>Tzvetomir Stoyanov <tz.stoyanov@gmail.com[2]>
π REPORTING BUGS π
Report bugs to <linux-trace-devel@vger.kernel.org[3]> β theyβre ready for your bug reports, bestie π«Ά
πΈ 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).
π NOTES π
rostedt@goodmis.orgβmailto:rostedt@goodmis.orgtz.stoyanov@gmail.comβmailto:tz.stoyanov@gmail.comlinux-trace-devel@vger.kernel.orgβmailto:linux-trace-devel@vger.kernel.org
and thatβs the footer vibe, bestie: libtracefs 1.8.4, dated 10/21/2026 β periodt π
β¨
π¦ where this page comes from
- arch rolling: libtracefs 1.8.4-1 Β· GPL-2.0-only AND LGPL-2.1-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms