From 010e4b2d52d5b5ab1eb866dfa0a2df5b984c343d Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Thu, 21 Jul 2016 13:51:36 -0400 Subject: 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 --- src/gallium/auxiliary/os/os_thread.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/gallium/auxiliary/os') 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 */ -- cgit v1.2.3