Skip to content
  • Steven Rostedt's avatar
    tracing/rcu: Add trace_##name##__rcuidle() static tracepoint for inside rcu_idle_exit() sections · 2fbb90db
    Steven Rostedt authored
    Added is a new static inline function that lets *any* tracepoint be used
    inside a rcu_idle_exit() section. And this also solves the problem where
    the same tracepoint may be used inside a rcu_idle_exit() section as well
    as outside of one.
    
    I added a new tracepoint function with a "_rcuidle" extension. All
    tracepoints can be used with either the normal "trace_foobar()"
    function, or the "trace_foobar_rcuidle()" function when inside a
    rcu_idle_exit() section.
    
    All tracepoints defined by TRACE_EVENT() or any of the derivatives
    will have a "_rcuidle()" function also defined. When a tracepoint is
    used within an rcu_idle_exit() section, the "_rcuidle()" version must
    be used. This denotes that the tracepoint is within rcu_idle_exit()
    and it allows the rcu read locks within the tracepoint to still
    be valid, as this version takes us out of rcu_idle_exit().
    
    Another nice aspect about this patch is that "static inline"s are not
    compiled into text when not used. So only the tracepoints that actually
    use the _rcuidle() version will have them defined in the actual text
    that is booted.
    
    Link: http://lkml.kernel.org/r/1328563113.2200.39.camel@gandalf.stny.rr.com
    
    >
    
    Acked-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    Reviewed-by: default avatarJosh Triplett <josh@joshtriplett.org>
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    2fbb90db