On 10/23/19 6:26 PM, Kevin Wolf wrote: > Some functions require that the caller holds a certain CoMutex for them > to operate correctly. Add a function so that they can assert the lock is > really held. > > Cc: qemu-sta...@nongnu.org > Signed-off-by: Kevin Wolf <kw...@redhat.com> > --- > include/qemu/coroutine.h | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/include/qemu/coroutine.h b/include/qemu/coroutine.h > index 9801e7f5a4..a36bcfe5c8 100644 > --- a/include/qemu/coroutine.h > +++ b/include/qemu/coroutine.h > @@ -167,6 +167,13 @@ void coroutine_fn qemu_co_mutex_lock(CoMutex *mutex); > */ > void coroutine_fn qemu_co_mutex_unlock(CoMutex *mutex); > > +/** > + * Assert that the current coroutine holds @mutex. > + */ > +static inline coroutine_fn void qemu_co_mutex_assert_locked(CoMutex *mutex) > +{ > + assert(mutex->locked && mutex->holder == qemu_coroutine_self()); > +} > > /** > * CoQueues are a mechanism to queue coroutines in order to continue > executing I think that we should use atomic_read(&mutex->locked) and require barriers working with holder.
Den