Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

tracing: Introduce TRACE_EVENT_FN_COND macro

TRACE_EVENT_FN can't be used in some circumstances
like invoking trace functions from offlined CPU due
to RCU usage.

This patch adds the TRACE_EVENT_FN_COND macro
to make such trace points conditional.

Link: http://lkml.kernel.org/r/1450124286-4822-1-git-send-email-kda@linux-powerpc.org

Signed-off-by: Denis Kirjanov <kda@linux-powerpc.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>

authored by

Denis Kirjanov and committed by
Steven Rostedt
2701121b ff078d8f

+16
+4
include/linux/tracepoint.h
··· 493 493 #define TRACE_EVENT_FN(name, proto, args, struct, \ 494 494 assign, print, reg, unreg) \ 495 495 DECLARE_TRACE(name, PARAMS(proto), PARAMS(args)) 496 + #define TRACE_EVENT_FN_COND(name, proto, args, cond, struct, \ 497 + assign, print, reg, unreg) \ 498 + DECLARE_TRACE_CONDITION(name, PARAMS(proto), \ 499 + PARAMS(args), PARAMS(cond)) 496 500 #define TRACE_EVENT_CONDITION(name, proto, args, cond, \ 497 501 struct, assign, print) \ 498 502 DECLARE_TRACE_CONDITION(name, PARAMS(proto), \
+6
include/trace/define_trace.h
··· 40 40 assign, print, reg, unreg) \ 41 41 DEFINE_TRACE_FN(name, reg, unreg) 42 42 43 + #undef TRACE_EVENT_FN_COND 44 + #define TRACE_EVENT_FN_COND(name, proto, args, cond, tstruct, \ 45 + assign, print, reg, unreg) \ 46 + DEFINE_TRACE_FN(name, reg, unreg) 47 + 43 48 #undef DEFINE_EVENT 44 49 #define DEFINE_EVENT(template, name, proto, args) \ 45 50 DEFINE_TRACE(name) ··· 98 93 99 94 #undef TRACE_EVENT 100 95 #undef TRACE_EVENT_FN 96 + #undef TRACE_EVENT_FN_COND 101 97 #undef TRACE_EVENT_CONDITION 102 98 #undef DECLARE_EVENT_CLASS 103 99 #undef DEFINE_EVENT
+6
include/trace/trace_events.h
··· 123 123 TRACE_EVENT(name, PARAMS(proto), PARAMS(args), \ 124 124 PARAMS(tstruct), PARAMS(assign), PARAMS(print)) \ 125 125 126 + #undef TRACE_EVENT_FN_COND 127 + #define TRACE_EVENT_FN_COND(name, proto, args, cond, tstruct, \ 128 + assign, print, reg, unreg) \ 129 + TRACE_EVENT_CONDITION(name, PARAMS(proto), PARAMS(args), PARAMS(cond), \ 130 + PARAMS(tstruct), PARAMS(assign), PARAMS(print)) \ 131 + 126 132 #undef TRACE_EVENT_FLAGS 127 133 #define TRACE_EVENT_FLAGS(name, value) \ 128 134 __TRACE_EVENT_FLAGS(name, value)