• S
    tracing: Add a way to soft disable trace events · 417944c4
    Steven Rostedt (Red Hat) 提交于
    In order to let triggers enable or disable events, we need a 'soft'
    method for doing so. For example, if a function probe is added that
    lets a user enable or disable events when a function is called, that
    change must be done without taking locks or a mutex, and definitely
    it can't sleep. But the full enabling of a tracepoint is expensive.
    
    By adding a 'SOFT_DISABLE' flag, and converting the flags to be updated
    without the protection of a mutex (using set/clear_bit()), this soft
    disable flag can be used to allow critical sections to enable or disable
    events from being traced (after the event has been placed into "SOFT_MODE").
    
    Some caveats though: The comm recorder (to map pids with a comm) can not
    be soft disabled (yet). If you disable an event with with a "soft"
    disable and wait a while before reading the trace, the comm cache may be
    replaced and you'll get a bunch of <...> for comms in the trace.
    
    Reading the "enable" file for an event that is disabled will now give
    you "0*" where the '*' denotes that the tracepoint is still active but
    the event itself is "disabled".
    
    [ fixed _BIT used in & operation : thanks to Dan Carpenter and smatch ]
    
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Tom Zanussi <tom.zanussi@linux.intel.com>
    Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
    417944c4
ftrace_event.h 11.0 KB