LibPthread: Okay I'm dumb, let's convert mutex locks into Atomic<u32>&

This commit is contained in:
Andreas Kling 2019-12-22 20:25:09 +01:00
parent 2e280417e2
commit a12c2df43f
Notes: sideshowbarker 2024-07-19 10:45:58 +09:00

View file

@ -114,11 +114,11 @@ int pthread_mutex_destroy(pthread_mutex_t*)
int pthread_mutex_lock(pthread_mutex_t* mutex)
{
auto* atomic = reinterpret_cast<Atomic<u32>*>(mutex->lock);
auto& atomic = reinterpret_cast<Atomic<u32>&>(mutex->lock);
pthread_t this_thread = pthread_self();
for (;;) {
u32 expected = false;
if (!atomic->compare_exchange_strong(expected, true, AK::memory_order_acq_rel)) {
if (!atomic.compare_exchange_strong(expected, true, AK::memory_order_acq_rel)) {
if (mutex->type == PTHREAD_MUTEX_RECURSIVE && mutex->owner == this_thread) {
mutex->level++;
return 0;
@ -134,9 +134,9 @@ int pthread_mutex_lock(pthread_mutex_t* mutex)
int pthread_mutex_trylock(pthread_mutex_t* mutex)
{
auto* atomic = reinterpret_cast<Atomic<u32>*>(mutex->lock);
auto& atomic = reinterpret_cast<Atomic<u32>&>(mutex->lock);
u32 expected = false;
if (!atomic->compare_exchange_strong(expected, true, AK::memory_order_acq_rel)) {
if (!atomic.compare_exchange_strong(expected, true, AK::memory_order_acq_rel)) {
if (mutex->type == PTHREAD_MUTEX_RECURSIVE && mutex->owner == pthread_self()) {
mutex->level++;
return 0;