From: Rob Clark Date: Thu, 21 Jul 2016 17:51:36 +0000 (-0400) Subject: os: add pipe_mutex_assert_locked() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=010e4b2d52d5b5ab1eb866dfa0a2df5b984c343d;p=mesa.git os: add pipe_mutex_assert_locked() Would be nice if we could also have lockdep, like in the linux kernel. But this is better than nothing. Signed-off-by: Rob Clark --- diff --git a/src/gallium/auxiliary/os/os_thread.h b/src/gallium/auxiliary/os/os_thread.h index be8adcc6cf2..ec8adbc75bb 100644 --- a/src/gallium/auxiliary/os/os_thread.h +++ b/src/gallium/auxiliary/os/os_thread.h @@ -116,6 +116,22 @@ typedef mtx_t pipe_mutex; #define pipe_mutex_unlock(mutex) \ (void) mtx_unlock(&(mutex)) +#define pipe_mutex_assert_locked(mutex) \ + __pipe_mutex_assert_locked(&(mutex)) + +static inline void +__pipe_mutex_assert_locked(pipe_mutex *mutex) +{ +#ifdef DEBUG + /* NOTE: this would not work for recursive mutexes, but + * pipe_mutex doesn't support those + */ + int ret = mtx_trylock(mutex); + assert(ret == thrd_busy); + if (ret == thrd_success) + mtx_unlock(mutex); +#endif +} /* pipe_condvar */