|
NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | EXAMPLE | FILES | SEE ALSO | AUTHOR | REPORTING BUGS | LICENSE | RESOURCES | COPYING | NOTES | COLOPHON |
|
|
|
LIBTRACEFS(3) libtracefs Manual LIBTRACEFS(3)
tracefs_cpu_open, tracefs_cpu_close, tracefs_cpu_alloc_fd,
tracefs_cpu_free_fd, tracefs_cpu_snapshot_open - Opening
trace_pipe_raw data for reading
#include <tracefs.h>
struct tracefs_cpu *tracefs_cpu_open(struct tracefs_instance *instance,
int cpu, bool nonblock);
void tracefs_cpu_close(struct tracefs_cpu *tcpu);
struct tracefs_cpu *tracefs_cpu_alloc_fd(int fd, int subbuf_size, bool nonblock);
void tracefs_cpu_free_fd(struct tracefs_cpu *tcpu);
struct tracefs_cpu *tracefs_cpu_snapshot_open(struct tracefs_instance *instance,
int cpu, bool nonblock);
This set of APIs can be used to open the raw data from the
trace_pipe_raw files in the tracefs file system in oder to read
them with the tracefs_cpu_read(3) functions.
The tracefs_cpu_open() creates a descriptor that can read the
tracefs trace_pipe_raw file for a given cpu in a given instance.
If instance is NULL than the toplevel trace_pipe_raw file is used.
The tracefs_cpu_close() closes all the file descriptors associated
to the trace_pipe_raw opened by tracefs_cpu_open().
The tracefs_cpu_alloc_fd() will create a tracefs_cpu descriptor
from an existing file descriptor fd. This is useful to use when
connecting to a socket or pipe where the other end is feeding raw
tracing data in the same format as the trace_pipe_raw file would
(like in guest to host tracing). The caller is responsible for
determining the subbuf_size that will be used to break up the
sub-buffers being read by the file descriptor. The nonblock is
treated the same as the same parameter in tracefs_cpu_open().
The tracefs_cpu_free_fd() is used to free the descriptor returned
by tracefs_cpu_alloc_fd(). It does all the clean up that
tracefs_cpu_close() performs, and that could also be used to free
up the descriptor created by tracefs_cpu_alloc_fd() but will also
close the file descriptor passed in. Note that
tracefs_cpu_free_fd() should not be used on the descriptor
returned by tracefs_cpu_open() as it will not close the file
descriptor created by it.
The tracefs_cpu_snapshot_open() is similar to tracefs_cpu_open()
except that it opens the snapshot buffer (see
tracefs_snapshot_snap(3)). The snapshot buffer does not have a
writer to it, it is only created by a snapshot action that swaps
the current ring buffer with the snapshot buffer. The nonblock,
when false, acts a little differently here too. Reads are not
affected by the "buffer_percent" file. If the snapshot buffer is
empty, it will block until a new snapshot happens.
The tracefs_cpu_open() and *tracefs_cpu_snapshot_open() both
return a struct tracefs_cpu descriptor that can be used by the
other functions or NULL on error.
The tracefs_cpu_alloc_fd() returns a struct tracefs_cpu descriptor
that can be used by the tracefs_cpu_read(3) related functions,
where the descriptor will be reading the passed in fd file
descriptor.
See tracefs_cpu_read(3) for an example.
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]>
Report bugs to <linux-trace-devel@vger.kernel.org[2]>
libtracefs is Free Software licensed under the GNU LGPL 2.1
https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/
Copyright (C) 2022 Google, 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. 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
2025-08-11. (At that time, the date of the most recent commit
that was found in the repository was 2025-06-02.) 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.8.1 01/02/2025 LIBTRACEFS(3)
Pages that refer to this page: tracefs_cpu_open_mapped(3), tracefs_cpu_read_buf(3), tracefs_cpu_read_size(3)