util/simple_mtx: add assert_locked()

Signed-off-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4810>
This commit is contained in:
Rob Clark 2020-04-28 12:39:32 -07:00 committed by Marge Bot
parent 3e1b93ec4f
commit 8aacaeca68
1 changed files with 22 additions and 0 deletions

View File

@ -113,6 +113,12 @@ simple_mtx_unlock(simple_mtx_t *mtx)
}
}
static inline void
simple_mtx_assert_locked(simple_mtx_t *mtx)
{
assert(mtx->val);
}
#else
typedef mtx_t simple_mtx_t;
@ -143,6 +149,22 @@ simple_mtx_unlock(simple_mtx_t *mtx)
mtx_unlock(mtx);
}
static inline void
simple_mtx_assert_locked(simple_mtx_t *mtx)
{
#ifdef DEBUG
/* NOTE: this would not work for recursive mutexes, but
* mtx_t doesn't support those
*/
int ret = mtx_trylock(mtx);
assert(ret == thrd_busy);
if (ret == thrd_success)
mtx_unlock(mtx);
#else
(void)mtx;
#endif
}
#endif
#endif