@@ -12,9 +12,9 @@ SYNOPSIS
--
*#include <tracefs.h>*
-struct tracefs_options_mask pass:[*]*tracefs_options_get_supported*(struct tracefs_instance pass:[*]_instance_);
+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_);
-struct tracefs_options_mask pass:[*]*tracefs_options_get_enabled*(struct tracefs_instance pass:[*]_instance_);
+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_);
--
@@ -25,11 +25,12 @@ 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 must be the same in all trace instances.
+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 must be supported in all trace instances also.
+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.
@@ -39,9 +40,10 @@ given _instance_. If _instance_ is NULL, the top trace instance is used.
RETURN VALUE
------------
-The _tracefs_options_get_supported()_ and _tracefs_options_get_enabled()_ functions return pointer
-to allocated bitmask with trace options, or NULL in case of an error. The returned bitmask must be
-freed with free();
+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.
@@ -145,9 +145,9 @@ enum tracefs_option_id {
struct tracefs_options_mask;
bool tracefs_option_mask_is_set(const struct tracefs_options_mask *options,
enum tracefs_option_id id);
-struct tracefs_options_mask *tracefs_options_get_supported(struct tracefs_instance *instance);
+const struct tracefs_options_mask *tracefs_options_get_supported(struct tracefs_instance *instance);
bool tracefs_option_is_supported(struct tracefs_instance *instance, enum tracefs_option_id id);
-struct tracefs_options_mask *tracefs_options_get_enabled(struct tracefs_instance *instance);
+const struct tracefs_options_mask *tracefs_options_get_enabled(struct tracefs_instance *instance);
bool tracefs_option_is_enabled(struct tracefs_instance *instance, enum tracefs_option_id id);
int tracefs_option_enable(struct tracefs_instance *instance, enum tracefs_option_id id);
int tracefs_option_diasble(struct tracefs_instance *instance, enum tracefs_option_id id);
@@ -208,8 +208,8 @@ enum tracefs_option_id tracefs_option_id(const char *name)
return TRACEFS_OPTION_INVALID;
}
-static struct tracefs_options_mask *trace_get_options(struct tracefs_instance *instance,
- bool enabled)
+const static struct tracefs_options_mask *
+trace_get_options(struct tracefs_instance *instance, bool enabled)
{
pthread_mutex_t *lock = instance ? &instance->lock : &toplevel_lock;
struct tracefs_options_mask *bitmask;
@@ -266,7 +266,8 @@ error:
* Returns bitmask structure with all trace options, supported in given instance,
* or NULL in case of an error.
*/
-struct tracefs_options_mask *tracefs_options_get_supported(struct tracefs_instance *instance)
+const struct tracefs_options_mask *
+tracefs_options_get_supported(struct tracefs_instance *instance)
{
return trace_get_options(instance, false);
}
@@ -278,7 +279,8 @@ struct tracefs_options_mask *tracefs_options_get_supported(struct tracefs_instan
* Returns bitmask structure with all trace options, enabled in given instance,
* or NULL in case of an error.
*/
-struct tracefs_options_mask *tracefs_options_get_enabled(struct tracefs_instance *instance)
+const struct tracefs_options_mask *
+tracefs_options_get_enabled(struct tracefs_instance *instance)
{
return trace_get_options(instance, true);
}