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>
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 812d04b..4fb2376 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -335,7 +335,7 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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);
}