libtracefs(3)
=============

NAME
----
tracefs_options_get_supported, tracefs_option_is_supported,
tracefs_options_get_enabled, tracefs_option_is_enabled, tracefs_option_mask_is_set
- Get and check ftrace options.

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

const struct tracefs_options_mask pass:[*]*tracefs_options_get_supported*(struct tracefs_instance pass:[*]_instance_);
bool *tracefs_option_is_supported*(struct tracefs_instance pass:[*]_instance_, enum tracefs_option_id _id_);
const struct tracefs_options_mask pass:[*]*tracefs_options_get_enabled*(struct tracefs_instance pass:[*]_instance_);
bool *tracefs_option_is_enabled*(struct tracefs_instance pass:[*]_instance_, enum tracefs_option_id _id_);
bool *tracefs_option_mask_is_set*(const struct tracefs_options_mask *options, enum tracefs_option_id id);
--

DESCRIPTION
-----------
This set of APIs can be used to get and check current ftrace options. Supported ftrace options may
depend on the kernel version and the kernel configuration.

The _tracefs_options_get_supported()_ function gets all ftrace options supported by the system in
the given _instance_. If _instance_ is NULL, supported options of the top trace instance are
returned. The set of supported options is the same in all created trace instances, but may be different
than the top trace instance.

The _tracefs_option_is_supported()_ function checks if the option with given _id_ is supported by
the system in the given _instance_. If _instance_ is NULL, the top trace instance is used. If an
option is supported at the top trace instance, it it may not be supported in a created trace instance.

The _tracefs_options_get_enabled()_ function gets all ftrace options, currently enabled in
the given _instance_. If _instance_ is NULL, enabled options of the top trace instance are returned.

The _tracefs_option_is_enabled()_ function checks if the option with given _id_ is enabled in the
given _instance_. If _instance_ is NULL, the top trace instance is used.

The _tracefs_option_mask_is_set()_ function checks if the bit, corresponding to the option with _id_ is
set in the _options_ bitmask returned from _tracefs_option_get_enabled()_ and _tracefs_option_is_supported()_.

RETURN VALUE
------------
The _tracefs_options_get_supported()_ and _tracefs_options_get_enabled()_ functions, on success,
return a pointer to the bitmask within the instance, or a global bitmask for the top level,
or NULL in case of an error. As the returned bitmask is part of the instance structure (or a
global variable) and must not be freed or modified.

The _tracefs_option_is_supported()_ and _tracefs_option_is_enabled()_ functions return true if the
option in supported / enabled, or false otherwise.

The _tracefs_option_mask_is_set()_ returns true if the corresponding option is set in the mask
or false otherwise.

EXAMPLE
-------
[source,c]
--
#include <tracefs.h>
...
const struct tracefs_options_mask *options;
...
options = tracefs_options_get_supported(NULL);
if (!options) {
	/* Failed to get supported options */
} else {
	...
}
...
options = tracefs_options_get_enabled(NULL);
if (!options) {
	/* Failed to get options, enabled in the top instance */
} else {
	...
}
if (tracefs_options_mask_is_set(options, TRACEFS_OPTION_LATENCY_FORMAT)) {
	...
}
...

if (tracefs_option_is_supported(NULL, TRACEFS_OPTION_LATENCY_FORMAT)) {
	/* Latency format option is supprted */
}

...

if (tracefs_option_is_enabled(NULL, TRACEFS_OPTION_STACKTRACE)) {
	/* Stacktrace option is enabled in the top instance */
}

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