Re: [PATCH] locking/rwsem: reduce spinlock contention in wakeup after up_read/up_write

From: Jason Low
Date: Mon Apr 20 2015 - 16:23:58 EST


On Fri, 2015-04-17 at 22:03 -0400, Waiman Long wrote:

> diff --git a/include/linux/osq_lock.h b/include/linux/osq_lock.h
> index 3a6490e..703ea5c 100644
> --- a/include/linux/osq_lock.h
> +++ b/include/linux/osq_lock.h
> @@ -32,4 +32,9 @@ static inline void osq_lock_init(struct optimistic_spin_queue *lock)
> extern bool osq_lock(struct optimistic_spin_queue *lock);
> extern void osq_unlock(struct optimistic_spin_queue *lock);
>
> +static inline bool osq_is_locked(struct optimistic_spin_queue *lock)
> +{
> + return atomic_read(&lock->tail) != OSQ_UNLOCKED_VAL;
> +}

Would it be better to separate the addition of osq_is_locked() into its
own patch, since this can be useful for other situations and isn't just
specific to the rwsem optimization.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/