LIBTRACEFS(3)
๐ LIBTRACEFS(3) โ bestie's guide to the libtracefs manual (section 3, we're fancy)
okay so this is the libtracefs manual page for all the little helper functions that help you work with tracing instances. if you've ever been like "what is even happening with my tracefs instances rn", this is the page. stay with me, it's giving useful.
โจ NAME โจ
tracefs_instance_get_name, tracefs_instance_get_trace_dir, tracefs_instances_walk, tracefs_instance_exists, tracefs_instance_get_buffer_size, tracefs_instance_set_buffer_size, tracefs_instance_get_buffer_percent, tracefs_instance_set_buffer_percent โ helper functions for working with tracing instances ๐
๐ธ SYNOPSIS ๐ธ
#include <tracefs.h>
const char *tracefs_instance_get_name(struct tracefs_instance *instance);
const char *tracefs_instance_get_trace_dir(struct tracefs_instance *instance);
int tracefs_instances_walk(int (*callback)(const char *, void *), void *context);
bool tracefs_instance_exists(const char *name);
size_t tracefs_instance_get_buffer_size(struct tracefs_instance *instance, int cpu);
int tracefs_instance_set_buffer_size(struct tracefs_instance *instance, size_t size, int cpu);
int tracefs_instance_get_buffer_percent(struct tracefs_instance *instance);
int tracefs_instance_set_buffer_percent(struct tracefs_instance *instance, int val);
๐ฆ DESCRIPTION ๐ฆ
so these are all helper functions for working with trace instances. literally the whole vibe. let's go one by one ๐
tracefs_instance_get_name() returns the name of the instance you hand it. plot twist tho: the top instance has no name, so for that one it returns NULL. no cap.
tracefs_instance_get_trace_dir() returns the tracing directory โ y'know, the place where that instance is configured. that's it, that's the function. icon behavior.
tracefs_instances_walk() walks through all configured tracing instances in the system and calls callback for each one. the context argument gets passed to the callback, along with the instance name. if your callback returns non-zero, the iteration stops โ like, we're done here bestie. โ ๏ธ note: the callback is not called for the top top instance.
tracefs_instance_exists() checks if an instance with the given name actually exists in the system. vibe check for instances fr fr.
tracefs_instace_get_buffer_size() โ yes that's how it's spelled up in here ๐ (same function, tracefs_instance_get_buffer_size) โ returns the size of the ring buffer. if cpu is negative, it returns the total size of all the per CPU ring buffers; otherwise it returns the size of the per CPU ring buffer for cpu.
tracefs_instance_set_buffer_size() sets the size of the ring buffer. if cpu is negative, then it sets all the per CPU ring buffers to size โ and heads up, the total size is the number of CPUs * size ๐งฎ. if cpu is specified, then it only sets the size of that one per CPU ring buffer.
tracefs_instance_set_buffer_percent() sets the buffer percent value of the tracing ring buffer for instance, or the top level buffer if instance is NULL. and what does buffer percent even do? okay so it decides when readers on tracefs_cpu_read(3), tracefs_cpu_buffered_read(3), tracefs_cpu_write(3) and tracefs_cpu_pipe(3) will block when O_NONBLOCK is not set. the value of val must be between 0 and 100, where:
0โ block until there's any data in the ring buffer1โ block until 1% of the ring buffer sub-buffers are filled50โ block until 50% of the ring buffer sub-buffers are filled100โ block until the entire ring buffer is filled
note: any number from0to100can be used โ it's the percentage of the ring buffer that must be filled before a blocked reader gets notified that there's data to be retrieved. slay. ๐
tracefs_instance_get_buffer_percent() retrieves the current buffer percent setting of the tracing ring buffer for instance, or the top level buffer if instance is NULL. matching set, we love symmetry ๐ซถ
๐ RETURN VALUE ๐
tracefs_instance_get_name() returns a string, or NULL in case of the top instance. the returned string must not be freed โ ๏ธ
tracefs_instance_get_trace_dir() returns a string, or NULL in case of an error. the returned string must not be freed โ ๏ธ
tracefs_instances_walk() returns 0 if all instances were iterated, 1 if the iteration was stopped by the callback, or -1 in case of an error.
tracefs_instance_exists() returns true if an instance with the given name exists in the system, or false otherwise.
tracefs_instance_get_buffer_size() returns the size of the ring buffer depending on the cpu value passed in, or -1 on error.
tracefs_instance_set_buffer_size() returns zero on success and -1 on error.
๐ EXAMPLE ๐
#include <tracefs.h>
struct tracefs_instance *inst;
....
char *name = tracefs_instance_get_name(inst);
if(name) {
/* Got name of the instance */
}
char *dir = tracefs_instance_get_trace_dir(inst);
if(dir) {
/* Got tracing directory of the instance */
}
...
static int instance_walk(char *name, void *context)
{
/* Got instance with name */
return 0;
}
...
if (tracefs_instances_walk(instance_walk, NULL) < 0) {
/* Error walking through the instances */
}
...
if (tracefs_instance_exists("foo")) {
/* There is instance with name foo in the system */
} else {
/* There is no instance with name foo in the system */
}
๐ 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 ๐ง
libtracefs(3), libtraceevent(3), trace-cmd(1)
๐ 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]> โ please actually report them, kthx ๐
โญ 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.orgmailto:rostedt@goodmis.orgtz.stoyanov@gmail.commailto:tz.stoyanov@gmail.comlinux-trace-devel@vger.kernel.orgmailto:linux-trace-devel@vger.kernel.org
k bye bestie!! ๐โจ๐ฆ this was libtracefs 1.8.4, dated 10/21/2026 โ go forth and walk those instances, you've got this ๐๐ธ
๐ฆ 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