Re: [PATCH v2 1/3] locking: Document the semantics of spin_is_locked()

From: David Howells
Date: Tue Apr 03 2018 - 08:49:21 EST


Andrea Parri <andrea.parri@xxxxxxxxxxxxxxxxxxxx> wrote:

> +/**
> + * spin_is_locked() - Check whether a spinlock is locked.
> + * @lock: Pointer to the spinlock.
> + *
> + * This function is NOT required to provide any memory ordering
> + * guarantees; it could be used for debugging purposes or, when
> + * additional synchronization is needed, accompanied with other
> + * constructs (memory barriers) enforcing the synchronization.
> + *
> + * Return: 1, if @lock is (found to be) locked; 0, otherwise.

It's more complicated than that. This function is dangerous and should be
used with extreme care. In the case where CONFIG_SMP=n the value is locked
one way or the other and it might be the wrong way.

David