diff options
author | Robert Richter <robert.richter@amd.com> | 2009-06-12 17:58:48 +0200 |
---|---|---|
committer | Robert Richter <robert.richter@amd.com> | 2009-06-12 17:58:48 +0200 |
commit | 1241eb8f136bf3ea409f61590e7663465906d158 (patch) | |
tree | c8384237f19bb1094d9c90825a74e28393b60d00 /kernel/rcutree.c | |
parent | 51563a0e5650d0d76539625388d72d62b34c726e (diff) | |
parent | 940010c5a314a7bd9b498593bc6ba1718ac5aec5 (diff) | |
download | kernel_samsung_tuna-1241eb8f136bf3ea409f61590e7663465906d158.zip kernel_samsung_tuna-1241eb8f136bf3ea409f61590e7663465906d158.tar.gz kernel_samsung_tuna-1241eb8f136bf3ea409f61590e7663465906d158.tar.bz2 |
Merge commit 'tip/perfcounters-for-linus' into oprofile/master
Conflicts:
arch/x86/oprofile/op_model_ppro.c
Signed-off-by: Robert Richter <robert.richter@amd.com>
Diffstat (limited to 'kernel/rcutree.c')
-rw-r--r-- | kernel/rcutree.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c index d2a372f..0dccfbb 100644 --- a/kernel/rcutree.c +++ b/kernel/rcutree.c @@ -1259,31 +1259,44 @@ static int __rcu_pending(struct rcu_state *rsp, struct rcu_data *rdp) check_cpu_stall(rsp, rdp); /* Is the RCU core waiting for a quiescent state from this CPU? */ - if (rdp->qs_pending) + if (rdp->qs_pending) { + rdp->n_rp_qs_pending++; return 1; + } /* Does this CPU have callbacks ready to invoke? */ - if (cpu_has_callbacks_ready_to_invoke(rdp)) + if (cpu_has_callbacks_ready_to_invoke(rdp)) { + rdp->n_rp_cb_ready++; return 1; + } /* Has RCU gone idle with this CPU needing another grace period? */ - if (cpu_needs_another_gp(rsp, rdp)) + if (cpu_needs_another_gp(rsp, rdp)) { + rdp->n_rp_cpu_needs_gp++; return 1; + } /* Has another RCU grace period completed? */ - if (ACCESS_ONCE(rsp->completed) != rdp->completed) /* outside of lock */ + if (ACCESS_ONCE(rsp->completed) != rdp->completed) { /* outside lock */ + rdp->n_rp_gp_completed++; return 1; + } /* Has a new RCU grace period started? */ - if (ACCESS_ONCE(rsp->gpnum) != rdp->gpnum) /* outside of lock */ + if (ACCESS_ONCE(rsp->gpnum) != rdp->gpnum) { /* outside lock */ + rdp->n_rp_gp_started++; return 1; + } /* Has an RCU GP gone long enough to send resched IPIs &c? */ if (ACCESS_ONCE(rsp->completed) != ACCESS_ONCE(rsp->gpnum) && - ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0)) + ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0)) { + rdp->n_rp_need_fqs++; return 1; + } /* nothing to do */ + rdp->n_rp_need_nothing++; return 0; } |