1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 13:38:11 +00:00

LibC: Move the __pthread_mutex_trylock function to LibC

Let's move this to LibC because the dynamic loader depends
on this function.
This commit is contained in:
Gunnar Beutner 2021-04-24 20:34:50 +02:00 committed by Andreas Kling
parent acd65a5f86
commit 549d9bd3ea
3 changed files with 20 additions and 12 deletions

View file

@ -167,18 +167,7 @@ int pthread_mutex_lock(pthread_mutex_t* mutex)
int pthread_mutex_trylock(pthread_mutex_t* mutex)
{
auto& atomic = reinterpret_cast<Atomic<u32>&>(mutex->lock);
u32 expected = false;
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;
}
return EBUSY;
}
mutex->owner = pthread_self();
mutex->level = 0;
return 0;
return __pthread_mutex_trylock(mutex);
}
int pthread_mutex_unlock(pthread_mutex_t* mutex)