rcu: Add tracing for _rcu_barrier()
This commit adds event tracing for _rcu_barrier() execution. This is defined only if RCU_TRACE=y. Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
This commit is contained in:

committed by
Paul E. McKenney

parent
cf3a9c4842
commit
a83eff0a82
@@ -541,6 +541,50 @@ TRACE_EVENT(rcu_torture_read,
|
||||
__entry->rcutorturename, __entry->rhp)
|
||||
);
|
||||
|
||||
/*
|
||||
* Tracepoint for _rcu_barrier() execution. The string "s" describes
|
||||
* the _rcu_barrier phase:
|
||||
* "Begin": rcu_barrier_callback() started.
|
||||
* "Check": rcu_barrier_callback() checking for piggybacking.
|
||||
* "EarlyExit": rcu_barrier_callback() piggybacked, thus early exit.
|
||||
* "Inc1": rcu_barrier_callback() piggyback check counter incremented.
|
||||
* "Offline": rcu_barrier_callback() found offline CPU
|
||||
* "OnlineQ": rcu_barrier_callback() found online CPU with callbacks.
|
||||
* "OnlineNQ": rcu_barrier_callback() found online CPU, no callbacks.
|
||||
* "IRQ": An rcu_barrier_callback() callback posted on remote CPU.
|
||||
* "CB": An rcu_barrier_callback() invoked a callback, not the last.
|
||||
* "LastCB": An rcu_barrier_callback() invoked the last callback.
|
||||
* "Inc2": rcu_barrier_callback() piggyback check counter incremented.
|
||||
* The "cpu" argument is the CPU or -1 if meaningless, the "cnt" argument
|
||||
* is the count of remaining callbacks, and "done" is the piggybacking count.
|
||||
*/
|
||||
TRACE_EVENT(rcu_barrier,
|
||||
|
||||
TP_PROTO(char *rcuname, char *s, int cpu, int cnt, unsigned long done),
|
||||
|
||||
TP_ARGS(rcuname, s, cpu, cnt, done),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(char *, rcuname)
|
||||
__field(char *, s)
|
||||
__field(int, cpu)
|
||||
__field(int, cnt)
|
||||
__field(unsigned long, done)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->rcuname = rcuname;
|
||||
__entry->s = s;
|
||||
__entry->cpu = cpu;
|
||||
__entry->cnt = cnt;
|
||||
__entry->done = done;
|
||||
),
|
||||
|
||||
TP_printk("%s %s cpu %d remaining %d # %lu",
|
||||
__entry->rcuname, __entry->s, __entry->cpu, __entry->cnt,
|
||||
__entry->done)
|
||||
);
|
||||
|
||||
#else /* #ifdef CONFIG_RCU_TRACE */
|
||||
|
||||
#define trace_rcu_grace_period(rcuname, gpnum, gpevent) do { } while (0)
|
||||
@@ -564,6 +608,7 @@ TRACE_EVENT(rcu_torture_read,
|
||||
#define trace_rcu_batch_end(rcuname, callbacks_invoked, cb, nr, iit, risk) \
|
||||
do { } while (0)
|
||||
#define trace_rcu_torture_read(rcutorturename, rhp) do { } while (0)
|
||||
#define trace_rcu_barrier(name, s, cpu, cnt, done) do { } while (0)
|
||||
|
||||
#endif /* #else #ifdef CONFIG_RCU_TRACE */
|
||||
|
||||
|
Reference in New Issue
Block a user