From 9beb5658826596553a03e58fc350b2123f30fdc0 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Sun, 14 Sep 2025 21:49:34 +0200 Subject: [PATCH] common/mutex: Return true, if unlocked. Signed-off-by: iabdalkader --- common/mutex.c | 8 ++++++-- common/mutex.h | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/common/mutex.c b/common/mutex.c index aed3238ff..6cb5bde7c 100644 --- a/common/mutex.c +++ b/common/mutex.c @@ -31,7 +31,9 @@ void mutex_init0(mutex_t *m) { } void mutex_lock(mutex_t *m, size_t tid) { - while (atomic_flag_test_and_set_explicit(&m->lock, memory_order_acquire)); + while (atomic_flag_test_and_set_explicit(&m->lock, memory_order_acquire)) { + + } atomic_store_explicit(&m->tid, tid, memory_order_release); } @@ -53,8 +55,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__