diff --git a/common/mutex.c b/common/mutex.c index aed3238ff..37714b6cf 100644 --- a/common/mutex.c +++ b/common/mutex.c @@ -53,8 +53,10 @@ bool mutex_try_lock_fair(mutex_t *m, size_t tid) { return false; } -void mutex_unlock(mutex_t *m, size_t tid) { +bool mutex_unlock(mutex_t *m, size_t tid) { if (atomic_load_explicit(&m->tid, memory_order_acquire) == tid) { atomic_flag_clear_explicit(&m->lock, memory_order_release); + return true; } + return false; } diff --git a/common/mutex.h b/common/mutex.h index 29e88445f..cccfb3d9a 100644 --- a/common/mutex.h +++ b/common/mutex.h @@ -48,5 +48,5 @@ void mutex_lock(mutex_t *mutex, size_t tid); bool mutex_try_lock(mutex_t *mutex, size_t tid); // Prevents a thread from locking twice in a row. bool mutex_try_lock_fair(mutex_t *mutex, size_t tid); -void mutex_unlock(mutex_t *mutex, size_t tid); +bool mutex_unlock(mutex_t *mutex, size_t tid); #endif // __MUTEX_H__