mirror of
https://github.com/openmv/openmv.git
synced 2025-09-26 23:09:13 +08:00
common/mutex: Return true, if unlocked.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
This commit is contained in:
parent
6a1c9b8ab9
commit
9beb565882
@ -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;
|
||||
}
|
||||
|
@ -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__
|
||||
|
Loading…
Reference in New Issue
Block a user