summaryrefslogtreecommitdiffstats
path: root/Documentation/libtracefs-instances-utils.txt
blob: bc8c9a7bf8e9b056e2bf6163fdf14d00b7b5f0cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
libtracefs(3)
=============

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 - Helper functions for working with tracing instances.

SYNOPSIS
--------
[verse]
--
*#include <tracefs.h>*

const char pass:[*]*tracefs_instance_get_name*(struct tracefs_instance pass:[*]_instance_);
const char pass:[*]*tracefs_instance_get_trace_dir*(struct tracefs_instance pass:[*]_instance_);
int *tracefs_instances_walk*(int (pass:[*]_callback_)(const char pass:[*], void pass:[*]), void pass:[*]_context)_;
bool *tracefs_instance_exists*(const char pass:[*]_name_);
size_t *tracefs_instance_get_buffer_size*(struct tracefs_instance pass:[*]_instance_, int _cpu_);
int *tracefs_instance_set_buffer_size*(struct tracefs_instance pass:[*]_instance_, size_t _size_, int _cpu_);
--

DESCRIPTION
-----------
Helper functions for working with trace instances.

The *tracefs_instance_get_name()* function returns the name of the given _instance_.
Note that the top instance has no name, the function returns NULL for it.

The *tracefs_instance_get_trace_dir()* function returns the tracing directory, where
the given _instance_ is configured.

The *tracefs_instances_walk()* function walks through all configured tracing
instances in the system and calls _callback_ for each one of them. The _context_
argument is passed to the _callback_, together with the instance name. If the
_callback_ returns non-zero, the iteration stops. Note, the _callback_ is not
called for the top top instance.

The *tracefs_instance_exists()* function checks if an instance with the given
_name_ exists in the system.

The *tracefs_instace_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_.

The *tracefs_instance_set_buffer_size()* function sets the size of the ring buffer.
If _cpu_ is negative, then it sets all the per CPU ring buffers to _size_ (note
the total size is the number of CPUs * _size_). If _cpu_ is specified, then it only
sets the size of the per CPU ring buffer.

RETURN VALUE
------------
The *tracefs_instance_get_name()* returns a string or NULL in case of the top
instance. The returned string must _not_ be freed.

The *tracefs_instance_get_trace_dir()* returns a string or NULL in case of an error.
The returned string must _not_ be freed.

The *tracefs_instances_walk()* function returns 0, if all instances were iterated, 1
if the iteration was stopped by the _callback_, or -1 in case of an error.

The *tracefs_instance_exists()* returns true if an instance with the given _name_
exists in the system or false otherwise.

The *tracefs_instance_get_buffer_size()* returns the size of the ring buffer depending on
the _cpu_ value passed in, or -1 on error.

The *tracefs_instance_set_buffer_size()* returns zero on success and -1 on error.

EXAMPLE
-------
[source,c]
--
#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
-----
[verse]
--
*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
------
[verse]
--
*Steven Rostedt* <rostedt@goodmis.org>
*Tzvetomir Stoyanov* <tz.stoyanov@gmail.com>
--
REPORTING BUGS
--------------
Report bugs to  <linux-trace-devel@vger.kernel.org>

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).