diff options
author | Paul E. McKenney <paul.mckenney@linaro.org> | 2011-06-25 09:36:56 -0400 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2011-09-29 00:38:21 -0400 |
commit | d4c08f2ac311a360230eef7e5395b0ec8d8f0670 (patch) | |
tree | 06e425b8153e076fbe43b037cf4497ac50afddb7 /kernel/rcutiny.c | |
parent | 965a002b4f1a458c5dcb334ec29f48a0046faa25 (diff) |
rcu: Add grace-period, quiescent-state, and call_rcu trace events
Add trace events to record grace-period start and end, quiescent states,
CPUs noticing grace-period start and end, grace-period initialization,
call_rcu() invocation, tasks blocking in RCU read-side critical sections,
tasks exiting those same critical sections, force_quiescent_state()
detection of dyntick-idle and offline CPUs, CPUs entering and leaving
dyntick-idle mode (except from NMIs), CPUs coming online and going
offline, and CPUs being kicked for staying in dyntick-idle mode for too
long (as in many weeks, even on 32-bit systems).
Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
rcu: Add the rcu flavor to callback trace events
The earlier trace events for registering RCU callbacks and for invoking
them did not include the RCU flavor (rcu_bh, rcu_preempt, or rcu_sched).
This commit adds the RCU flavor to those trace events.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcutiny.c')
-rw-r--r-- | kernel/rcutiny.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/rcutiny.c b/kernel/rcutiny.c index c9321d86999b..da775c87f27f 100644 --- a/kernel/rcutiny.c +++ b/kernel/rcutiny.c | |||
@@ -147,6 +147,7 @@ void rcu_check_callbacks(int cpu, int user) | |||
147 | */ | 147 | */ |
148 | static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp) | 148 | static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp) |
149 | { | 149 | { |
150 | char *rn = NULL; | ||
150 | struct rcu_head *next, *list; | 151 | struct rcu_head *next, *list; |
151 | unsigned long flags; | 152 | unsigned long flags; |
152 | RCU_TRACE(int cb_count = 0); | 153 | RCU_TRACE(int cb_count = 0); |
@@ -171,12 +172,13 @@ static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp) | |||
171 | local_irq_restore(flags); | 172 | local_irq_restore(flags); |
172 | 173 | ||
173 | /* Invoke the callbacks on the local list. */ | 174 | /* Invoke the callbacks on the local list. */ |
175 | RCU_TRACE(rn = rcp->name); | ||
174 | while (list) { | 176 | while (list) { |
175 | next = list->next; | 177 | next = list->next; |
176 | prefetch(next); | 178 | prefetch(next); |
177 | debug_rcu_head_unqueue(list); | 179 | debug_rcu_head_unqueue(list); |
178 | local_bh_disable(); | 180 | local_bh_disable(); |
179 | __rcu_reclaim(list); | 181 | __rcu_reclaim(rn, list); |
180 | local_bh_enable(); | 182 | local_bh_enable(); |
181 | list = next; | 183 | list = next; |
182 | RCU_TRACE(cb_count++); | 184 | RCU_TRACE(cb_count++); |