tracepoints: Add helper to test if tracepoint is enabled in a header
authorSteven Rostedt (VMware) <rostedt@goodmis.org>
Thu, 24 Sep 2020 16:30:20 +0000 (12:30 -0400)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Fri, 25 Sep 2020 22:01:35 +0000 (18:01 -0400)
commitafbe7973173a7ce0a68af8b33e44c967582297be
treee3275757d5e04d8adde4d731c3e159d0d0bcc6f1
parent720dee53ad8dfd528941fbbc264574601b04488a
tracepoints: Add helper to test if tracepoint is enabled in a header

As tracepoints are discouraged from being added in a header because it can
cause side effects if other tracepoints are in headers, as well as bloat the
kernel as the trace_<tracepoint>() function is not a small inline, the common
workaround is to add a function call that calls a wrapper function in a
C file that then calls the tracepoint. But as function calls add overhead,
this function should only be called when the tracepoint in question is
enabled. To get around this overhead, a static_branch can be used to only
have the tracepoint wrapper get called when the tracepoint is enabled.

Add a tracepoint_enabled(tp) macro that gets passed the name of the
tracepoint, and this becomes a static_branch that is enabled when the
tracepoint is enabled and is a nop when the tracepoint is disabled.

Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Documentation/trace/tracepoints.rst
include/linux/tracepoint-defs.h