xref: /aosp_15_r20/external/libtracefs/Documentation/libtracefs-cpu-open.txt (revision 287e80b3a36113050663245e7f2c00d274188f18)
1libtracefs(3)
2=============
3
4NAME
5----
6tracefs_cpu_open, tracefs_cpu_close, tracefs_cpu_alloc_fd, tracefs_cpu_free_fd - Opening trace_pipe_raw data for reading
7
8SYNOPSIS
9--------
10[verse]
11--
12*#include <tracefs.h>*
13
14struct tracefs_cpu pass:[*]*tracefs_cpu_open*(struct tracefs_instance pass:[*]_instance_,
15				     int _cpu_, bool _nonblock_);
16void *tracefs_cpu_close*(struct tracefs_cpu pass:[*]_tcpu_);
17
18struct tracefs_cpu pass:[*]*tracefs_cpu_alloc_fd*(int _fd_, int _subbuf_size_, bool _nonblock_);
19void *tracefs_cpu_free_fd*(struct tracefs_cpu pass:[*]_tcpu_);
20--
21
22DESCRIPTION
23-----------
24This set of APIs can be used to open the raw data from the trace_pipe_raw
25files in the tracefs file system in oder to read them with the *tracefs_cpu_read*(3)
26functions.
27
28The *tracefs_cpu_open()* creates a descriptor that can read the tracefs
29trace_pipe_raw file for a given _cpu_ in a given _instance_. If _instance_ is
30NULL than the toplevel trace_pipe_raw file is used.
31
32The *tracefs_cpu_close()* closes all the file descriptors associated to the trace_pipe_raw
33opened by *tracefs_cpu_open()*.
34
35The *tracefs_cpu_alloc_fd()* will create a tracefs_cpu descriptor from an existing
36file descriptor _fd_. This is useful to use when connecting to a socket or pipe where
37the other end is feeding raw tracing data in the same format as the trace_pipe_raw
38file would (like in guest to host tracing). The caller is responsible for determining
39the _subbuf_size_ that will be used to break up the sub-buffers being read by the
40file descriptor. The _nonblock_ is treated the same as the same parameter in
41*tracefs_cpu_open()*.
42
43The *tracefs_cpu_free_fd()* is used to free the descriptor returned by *tracefs_cpu_alloc_fd()*.
44It does all the clean up that *tracefs_cpu_close()* performs, and that could also be
45used to free up the descriptor created by *tracefs_cpu_alloc_fd()* but will also close
46the file descriptor passed in. Note that *tracefs_cpu_free_fd()* should not be used
47on the descriptor returned by *tracefs_cpu_open()* as it will not close the file descriptor
48created by it.
49
50RETURN VALUE
51------------
52The *tracefs_cpu_open()* returns a struct tracefs_cpu descriptor that can be
53used by the other functions or NULL on error.
54
55The *tracefs_cpu_alloc_fd()* returns a struct tracefs_cpu descriptor that can
56be used by the *tracefs_cpu_read*(3) related functions, where the descriptor
57will be reading the passed in _fd_ file descriptor.
58
59EXAMPLE
60-------
61See *tracefs_cpu_read*(3) for an example.
62
63FILES
64-----
65[verse]
66--
67*tracefs.h*
68	Header file to include in order to have access to the library APIs.
69*-ltracefs*
70	Linker switch to add when building a program that uses the library.
71--
72
73SEE ALSO
74--------
75*libtracefs*(3),
76*libtraceevent*(3),
77*trace-cmd*(1)
78
79AUTHOR
80------
81[verse]
82--
83*Steven Rostedt* <[email protected]>
84--
85REPORTING BUGS
86--------------
87Report bugs to  <[email protected]>
88
89LICENSE
90-------
91libtracefs is Free Software licensed under the GNU LGPL 2.1
92
93RESOURCES
94---------
95https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/
96
97COPYING
98-------
99Copyright \(C) 2022 Google, Inc. Free use of this software is granted under
100the terms of the GNU Public License (GPL).
101