summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul E. McKenney <paul.mckenney@linaro.org>2012-09-04 17:35:31 -0700
committerFrederic Weisbecker <fweisbec@gmail.com>2012-09-26 15:47:18 +0200
commitcb349ca95407cbc11424d5e9fc7c8e700709041b (patch)
treeb20795decb064af75aae8f9f6af77806b1a4769a
parent1fd2b4425a5702c112b441e20b250ac8833a9608 (diff)
downloadlinux-cb349ca95407cbc11424d5e9fc7c8e700709041b.tar.gz
linux-cb349ca95407cbc11424d5e9fc7c8e700709041b.tar.bz2
linux-cb349ca95407cbc11424d5e9fc7c8e700709041b.zip
rcu: Apply micro-optimization and int/bool fixes to RCU's idle handling
Checking "user" before "is_idle_task()" allows better optimizations in cases where inlining is possible. Also, "bool" should be passed "true" or "false" rather than "1" or "0". This commit therefore makes these changes, as noted in Josh's review. Reported-by: Josh Triplett <josh@joshtriplett.org> 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>
-rw-r--r--kernel/rcutree.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 812d04b6b395..4fb2376ddf06 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -335,7 +335,7 @@ static void rcu_eqs_enter_common(struct rcu_dynticks *rdtp, long long oldval,
bool user)
{
trace_rcu_dyntick("Start", oldval, 0);
- if (!is_idle_task(current) && !user) {
+ if (!user && !is_idle_task(current)) {
struct task_struct *idle = idle_task(smp_processor_id());
trace_rcu_dyntick("Error on entry: not idle task", oldval, 0);
@@ -399,7 +399,7 @@ void rcu_idle_enter(void)
unsigned long flags;
local_irq_save(flags);
- rcu_eqs_enter(0);
+ rcu_eqs_enter(false);
local_irq_restore(flags);
}
EXPORT_SYMBOL_GPL(rcu_idle_enter);
@@ -435,7 +435,7 @@ void rcu_user_enter(void)
rdtp = &__get_cpu_var(rcu_dynticks);
if (!rdtp->ignore_user_qs && !rdtp->in_user) {
rdtp->in_user = true;
- rcu_eqs_enter(1);
+ rcu_eqs_enter(true);
}
local_irq_restore(flags);
}
@@ -492,7 +492,7 @@ void rcu_irq_exit(void)
if (rdtp->dynticks_nesting)
trace_rcu_dyntick("--=", oldval, rdtp->dynticks_nesting);
else
- rcu_eqs_enter_common(rdtp, oldval, 1);
+ rcu_eqs_enter_common(rdtp, oldval, true);
local_irq_restore(flags);
}
@@ -513,7 +513,7 @@ static void rcu_eqs_exit_common(struct rcu_dynticks *rdtp, long long oldval,
WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks) & 0x1));
rcu_cleanup_after_idle(smp_processor_id());
trace_rcu_dyntick("End", oldval, rdtp->dynticks_nesting);
- if (!is_idle_task(current) && !user) {
+ if (!user && !is_idle_task(current)) {
struct task_struct *idle = idle_task(smp_processor_id());
trace_rcu_dyntick("Error on exit: not idle task",
@@ -560,7 +560,7 @@ void rcu_idle_exit(void)
unsigned long flags;
local_irq_save(flags);
- rcu_eqs_exit(0);
+ rcu_eqs_exit(false);
local_irq_restore(flags);
}
EXPORT_SYMBOL_GPL(rcu_idle_exit);
@@ -592,7 +592,7 @@ void rcu_user_exit(void)
rdtp = &__get_cpu_var(rcu_dynticks);
if (rdtp->in_user) {
rdtp->in_user = false;
- rcu_eqs_exit(1);
+ rcu_eqs_exit(true);
}
local_irq_restore(flags);
}
@@ -653,7 +653,7 @@ void rcu_irq_enter(void)
if (oldval)
trace_rcu_dyntick("++=", oldval, rdtp->dynticks_nesting);
else
- rcu_eqs_exit_common(rdtp, oldval, 1);
+ rcu_eqs_exit_common(rdtp, oldval, true);
local_irq_restore(flags);
}