mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 17:02:45 +00:00 
			
		
		
		
	LibC: Use memory_order_acquire instead of memory_order_acq_rel
Acquire ordering should be sufficient for pthread_mutex_lock and pthread_mutex_trylock.
This commit is contained in:
		
							parent
							
								
									90f4c9e44c
								
							
						
					
					
						commit
						9e3fb73169
					
				
					 1 changed files with 2 additions and 2 deletions
				
			
		|  | @ -96,7 +96,7 @@ int __pthread_mutex_lock(pthread_mutex_t* mutex) | ||||||
|     pthread_t this_thread = __pthread_self(); |     pthread_t this_thread = __pthread_self(); | ||||||
|     for (;;) { |     for (;;) { | ||||||
|         u32 expected = 0; |         u32 expected = 0; | ||||||
|         if (!AK::atomic_compare_exchange_strong(&mutex->lock, expected, 1u, AK::memory_order_acq_rel)) { |         if (!AK::atomic_compare_exchange_strong(&mutex->lock, expected, 1u, AK::memory_order_acquire)) { | ||||||
|             if (mutex->type == __PTHREAD_MUTEX_RECURSIVE && mutex->owner == this_thread) { |             if (mutex->type == __PTHREAD_MUTEX_RECURSIVE && mutex->owner == this_thread) { | ||||||
|                 mutex->level++; |                 mutex->level++; | ||||||
|                 return 0; |                 return 0; | ||||||
|  | @ -128,7 +128,7 @@ int pthread_mutex_unlock(pthread_mutex_t*) __attribute__((weak, alias("__pthread | ||||||
| int __pthread_mutex_trylock(pthread_mutex_t* mutex) | int __pthread_mutex_trylock(pthread_mutex_t* mutex) | ||||||
| { | { | ||||||
|     u32 expected = 0; |     u32 expected = 0; | ||||||
|     if (!AK::atomic_compare_exchange_strong(&mutex->lock, expected, 1u, AK::memory_order_acq_rel)) { |     if (!AK::atomic_compare_exchange_strong(&mutex->lock, expected, 1u, AK::memory_order_acquire)) { | ||||||
|         if (mutex->type == __PTHREAD_MUTEX_RECURSIVE && mutex->owner == pthread_self()) { |         if (mutex->type == __PTHREAD_MUTEX_RECURSIVE && mutex->owner == pthread_self()) { | ||||||
|             mutex->level++; |             mutex->level++; | ||||||
|             return 0; |             return 0; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Gunnar Beutner
						Gunnar Beutner