# tracefs_options_get_supported

## NAME



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


## SYNOPSIS



           **#include <tracefs.h>**
    
           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_);
           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_);
           bool **tracefs_option_mask_is_set**(const struct tracefs_options_mask **options, enum tracefs_option_id id);**
           **enum tracefs_option_id *tracefs_option_id**(const char *_name_);
    


## 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()**.
    
           The **tracefs_option_id()** converts an option _name_ into its
           corresponding id, if it is found. This allows to find the option
           _id_ to use in the other functions if only the _name_ is known.
    


## 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.
    
           The **tracefs_option_id()** returns the corresponding id defined by
           tracefs_options(3) from the given _name_. If the _name_ can not be
           found, then TRACEFS_OPTION_INVALID is returned.
    


## EXAMPLE



               #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



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


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


## NOTES



            1. rostedt@goodmis.org
               mailto:rostedt@goodmis.org
    
            2. tz.stoyanov@gmail.com
               mailto:tz.stoyanov@gmail.com
    
            3. linux-trace-devel@vger.kernel.org
               mailto:linux-trace-devel@vger.kernel.org
    


* * *