rcu: Simplify unboosting checks
authorPaul E. McKenney <paul.mckenney@linaro.org>
Thu, 12 Jan 2012 01:25:17 +0000 (17:25 -0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 21 Feb 2012 17:03:43 +0000 (09:03 -0800)
commit1aa03f1188f7b0b85df2de602b33ee7b6fab8e00
tree20ee8fc1aa5bccc8d8cf53c705d9cc766058eaf5
parent8762705ad4ac860bb78434409df463d02ac8f027
rcu: Simplify unboosting checks

This is a port of commit #82e78d80 from TREE_PREEMPT_RCU to
TINY_PREEMPT_RCU.

This commit uses the fact that current->rcu_boost_mutex is set
any time that the RCU_READ_UNLOCK_BOOSTED flag is set in the
current->rcu_read_unlock_special bitmask.  This allows tests of
the bit to be changed to tests of the pointer, which in turn allows
the RCU_READ_UNLOCK_BOOSTED flag to be eliminated.

Please note that the check of current->rcu_read_unlock_special need not
change because any time that RCU_READ_UNLOCK_BOOSTED was set, so was
RCU_READ_UNLOCK_BLOCKED.  Therefore, __rcu_read_unlock() can continue
testing current->rcu_read_unlock_special for non-zero, as before.

Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
include/linux/sched.h
kernel/rcutiny_plugin.h