Fix mutex locking.

This commit is contained in:
iabdalkader 2021-05-21 23:17:40 +02:00
parent ef43cb25ac
commit 6f02fa2114

View File

@ -38,13 +38,12 @@ static void _mutex_lock(omv_mutex_t *mutex, uint32_t tid, bool blocking)
} while (mutex->tid != tid && blocking); } while (mutex->tid != tid && blocking);
#else #else
do { do {
// Attempt exclusive read // Attempt to lock the mutex
while (__LDREXW(&mutex->lock) != 0); if (__LDREXW(&mutex->lock) == 0) {
if (__STREXW(1, &mutex->lock) == 0) {
// Attempt to lock mutex // Set TID if mutex is locked
if(__STREXW(1, &mutex->lock) == 0) { mutex->tid = tid;
// Set TID if mutex is locked }
mutex->tid = tid;
} }
} while (mutex->tid != tid && blocking); } while (mutex->tid != tid && blocking);
#endif #endif