1*287e80b3SSadaf Ebrahimilibtracefs(3) 2*287e80b3SSadaf Ebrahimi============= 3*287e80b3SSadaf Ebrahimi 4*287e80b3SSadaf EbrahimiNAME 5*287e80b3SSadaf Ebrahimi---- 6*287e80b3SSadaf Ebrahimitracefs_trace_is_on, tracefs_trace_on, tracefs_trace_off, tracefs_trace_on_get_fd, 7*287e80b3SSadaf Ebrahimitracefs_trace_on_fd, tracefs_trace_off_fd - Functions to enable or disable tracing. 8*287e80b3SSadaf Ebrahimi 9*287e80b3SSadaf EbrahimiSYNOPSIS 10*287e80b3SSadaf Ebrahimi-------- 11*287e80b3SSadaf Ebrahimi[verse] 12*287e80b3SSadaf Ebrahimi-- 13*287e80b3SSadaf Ebrahimi*#include <tracefs.h>* 14*287e80b3SSadaf Ebrahimi 15*287e80b3SSadaf Ebrahimiint *tracefs_trace_is_on*(struct tracefs_instance pass:[*]_instance_); 16*287e80b3SSadaf Ebrahimiint *tracefs_trace_on*(struct tracefs_instance pass:[*]_instance_); 17*287e80b3SSadaf Ebrahimiint *tracefs_trace_off*(struct tracefs_instance pass:[*]_instance_); 18*287e80b3SSadaf Ebrahimiint *tracefs_trace_on_get_fd*(struct tracefs_instance pass:[*]_instance_); 19*287e80b3SSadaf Ebrahimiint *tracefs_trace_on_fd*(int _fd_); 20*287e80b3SSadaf Ebrahimiint *tracefs_trace_off_fd*(int _fd_); 21*287e80b3SSadaf Ebrahimi-- 22*287e80b3SSadaf Ebrahimi 23*287e80b3SSadaf EbrahimiDESCRIPTION 24*287e80b3SSadaf Ebrahimi----------- 25*287e80b3SSadaf EbrahimiThis set of functions can be used to check, enable or disable writing to the ring buffer in 26*287e80b3SSadaf Ebrahimithe given trace instance. The tracing is enabled when writing to the ring buffer is enabled. 27*287e80b3SSadaf Ebrahimi 28*287e80b3SSadaf EbrahimiThe *tracefs_trace_is_on()* function checks if tracing is enabled for the given _instance_. If 29*287e80b3SSadaf Ebrahimi_instance_ is NULL, the top instance is used. 30*287e80b3SSadaf Ebrahimi 31*287e80b3SSadaf EbrahimiThe *tracefs_trace_on()* and *tracefs_trace_off()* functions set the tracing in the _instance_ 32*287e80b3SSadaf Ebrahimito enable or disable state. If _instance_ is NULL, the top instance is used. 33*287e80b3SSadaf Ebrahimi 34*287e80b3SSadaf EbrahimiThe *tracefs_trace_on_get_fd()* function returns a file descriptor to the "tracing_on" file from 35*287e80b3SSadaf Ebrahimithe given _instance_. If _instance_ is NULL, the top trace instance is used. The returned descriptor 36*287e80b3SSadaf Ebrahimican be used for fast enabling or disabling the tracing of the instance. 37*287e80b3SSadaf Ebrahimi 38*287e80b3SSadaf EbrahimiThe *tracefs_trace_on_fd()* and *tracefs_trace_off_fd()* functions set the tracing state to enable 39*287e80b3SSadaf Ebrahimior disable using the given _fd_. This file descriptor must be opened for writing with 40*287e80b3SSadaf Ebrahimi*tracefs_trace_on_get_fd*(3) of the desired trace instance. These functions are faster than 41*287e80b3SSadaf Ebrahimi*tracefs_trace_on* and *tracefs_trace_off*. 42*287e80b3SSadaf Ebrahimi 43*287e80b3SSadaf EbrahimiRETURN VALUE 44*287e80b3SSadaf Ebrahimi------------ 45*287e80b3SSadaf EbrahimiThe *tracefs_trace_is_on()* function returns 0 if tracing is disable, 1 if it is enabled or 46*287e80b3SSadaf Ebrahimi-1 in case of an error. 47*287e80b3SSadaf Ebrahimi 48*287e80b3SSadaf EbrahimiThe *tracefs_trace_on_get_fd()* function returns a file descriptor to "tracing_on" 49*287e80b3SSadaf Ebrahimifile for reading and writing, which must be closed wuth close(). In case of an error -1 is returned. 50*287e80b3SSadaf Ebrahimi 51*287e80b3SSadaf EbrahimiThe *tracefs_trace_on()*, *tracefs_trace_off()*, *tracefs_trace_on_fd()* and 52*287e80b3SSadaf Ebrahimi*tracefs_trace_off_fd()* functions return -1 in case of an error or 0 otherwise. 53*287e80b3SSadaf Ebrahimi 54*287e80b3SSadaf EbrahimiEXAMPLE 55*287e80b3SSadaf Ebrahimi------- 56*287e80b3SSadaf Ebrahimi[source,c] 57*287e80b3SSadaf Ebrahimi-- 58*287e80b3SSadaf Ebrahimi#include <tracefs.h> 59*287e80b3SSadaf Ebrahimi 60*287e80b3SSadaf Ebrahimi int ret; 61*287e80b3SSadaf Ebrahimi 62*287e80b3SSadaf Ebrahimi ret = tracefs_trace_is_on(NULL); 63*287e80b3SSadaf Ebrahimi if (ret == 0) { 64*287e80b3SSadaf Ebrahimi /* Tracing is disabled in the top instance */ 65*287e80b3SSadaf Ebrahimi } else if (ret == 1) { 66*287e80b3SSadaf Ebrahimi /* Tracing is enabled in the top instance */ 67*287e80b3SSadaf Ebrahimi } else { 68*287e80b3SSadaf Ebrahimi /* Error getting tracing state of the top instance */ 69*287e80b3SSadaf Ebrahimi } 70*287e80b3SSadaf Ebrahimi 71*287e80b3SSadaf Ebrahimi ... 72*287e80b3SSadaf Ebrahimi 73*287e80b3SSadaf Ebrahimi if (!tracefs_trace_on(NULL)) { 74*287e80b3SSadaf Ebrahimi /* Enabled tracing in the top instance */ 75*287e80b3SSadaf Ebrahimi 76*287e80b3SSadaf Ebrahimi ... 77*287e80b3SSadaf Ebrahimi 78*287e80b3SSadaf Ebrahimi if (!tracefs_trace_off(NULL)) { 79*287e80b3SSadaf Ebrahimi /* Disabled tracing in the top instance */ 80*287e80b3SSadaf Ebrahimi } else { 81*287e80b3SSadaf Ebrahimi /* Error disabling tracing in the top instance */ 82*287e80b3SSadaf Ebrahimi } 83*287e80b3SSadaf Ebrahimi } else { 84*287e80b3SSadaf Ebrahimi /* Error enabling tracing in the top instance */ 85*287e80b3SSadaf Ebrahimi } 86*287e80b3SSadaf Ebrahimi 87*287e80b3SSadaf Ebrahimi ... 88*287e80b3SSadaf Ebrahimi 89*287e80b3SSadaf Ebrahimi int fd = tracefs_trace_on_get_fd(NULL); 90*287e80b3SSadaf Ebrahimi 91*287e80b3SSadaf Ebrahimi if (fd < 0) { 92*287e80b3SSadaf Ebrahimi /* Error opening tracing_on file */ 93*287e80b3SSadaf Ebrahimi } 94*287e80b3SSadaf Ebrahimi ... 95*287e80b3SSadaf Ebrahimi if (!tracefs_trace_on_fd(fd)) { 96*287e80b3SSadaf Ebrahimi /* Enabled tracing in the top instance */ 97*287e80b3SSadaf Ebrahimi 98*287e80b3SSadaf Ebrahimi ... 99*287e80b3SSadaf Ebrahimi 100*287e80b3SSadaf Ebrahimi if (!tracefs_trace_off_fd(fd)) { 101*287e80b3SSadaf Ebrahimi /* Disabled tracing in the top instance */ 102*287e80b3SSadaf Ebrahimi } else { 103*287e80b3SSadaf Ebrahimi /* Error disabling tracing in the top instance */ 104*287e80b3SSadaf Ebrahimi } 105*287e80b3SSadaf Ebrahimi } else { 106*287e80b3SSadaf Ebrahimi /* Error enabling tracing in the top instance */ 107*287e80b3SSadaf Ebrahimi } 108*287e80b3SSadaf Ebrahimi 109*287e80b3SSadaf Ebrahimi ... 110*287e80b3SSadaf Ebrahimi 111*287e80b3SSadaf Ebrahimi close(fd); 112*287e80b3SSadaf Ebrahimi-- 113*287e80b3SSadaf EbrahimiFILES 114*287e80b3SSadaf Ebrahimi----- 115*287e80b3SSadaf Ebrahimi[verse] 116*287e80b3SSadaf Ebrahimi-- 117*287e80b3SSadaf Ebrahimi*tracefs.h* 118*287e80b3SSadaf Ebrahimi Header file to include in order to have access to the library APIs. 119*287e80b3SSadaf Ebrahimi*-ltracefs* 120*287e80b3SSadaf Ebrahimi Linker switch to add when building a program that uses the library. 121*287e80b3SSadaf Ebrahimi-- 122*287e80b3SSadaf Ebrahimi 123*287e80b3SSadaf EbrahimiSEE ALSO 124*287e80b3SSadaf Ebrahimi-------- 125*287e80b3SSadaf Ebrahimi*libtracefs*(3), 126*287e80b3SSadaf Ebrahimi*libtraceevent*(3), 127*287e80b3SSadaf Ebrahimi*trace-cmd*(1) 128*287e80b3SSadaf Ebrahimi 129*287e80b3SSadaf EbrahimiAUTHOR 130*287e80b3SSadaf Ebrahimi------ 131*287e80b3SSadaf Ebrahimi[verse] 132*287e80b3SSadaf Ebrahimi-- 133*287e80b3SSadaf Ebrahimi*Steven Rostedt* <[email protected]> 134*287e80b3SSadaf Ebrahimi*Tzvetomir Stoyanov* <[email protected]> 135*287e80b3SSadaf Ebrahimi-- 136*287e80b3SSadaf EbrahimiREPORTING BUGS 137*287e80b3SSadaf Ebrahimi-------------- 138*287e80b3SSadaf EbrahimiReport bugs to <[email protected]> 139*287e80b3SSadaf Ebrahimi 140*287e80b3SSadaf EbrahimiLICENSE 141*287e80b3SSadaf Ebrahimi------- 142*287e80b3SSadaf Ebrahimilibtracefs is Free Software licensed under the GNU LGPL 2.1 143*287e80b3SSadaf Ebrahimi 144*287e80b3SSadaf EbrahimiRESOURCES 145*287e80b3SSadaf Ebrahimi--------- 146*287e80b3SSadaf Ebrahimihttps://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/ 147*287e80b3SSadaf Ebrahimi 148*287e80b3SSadaf EbrahimiCOPYING 149*287e80b3SSadaf Ebrahimi------- 150*287e80b3SSadaf EbrahimiCopyright \(C) 2021 VMware, Inc. Free use of this software is granted under 151*287e80b3SSadaf Ebrahimithe terms of the GNU Public License (GPL). 152