mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 12:22:44 +00:00 
			
		
		
		
	Kernel: Some futex improvements
This adds support for FUTEX_WAKE_OP, FUTEX_WAIT_BITSET, FUTEX_WAKE_BITSET, FUTEX_REQUEUE, and FUTEX_CMP_REQUEUE, as well well as global and private futex and absolute/relative timeouts against the appropriate clock. This also changes the implementation so that kernel resources are only used when a thread is blocked on a futex. Global futexes are implemented as offsets in VMObjects, so that different processes can share a futex against the same VMObject despite potentially being mapped at different virtual addresses.
This commit is contained in:
		
							parent
							
								
									7581b64705
								
							
						
					
					
						commit
						1d621ab172
					
				
					 23 changed files with 928 additions and 63 deletions
				
			
		|  | @ -45,6 +45,13 @@ VMObject::VMObject(size_t size) | |||
| 
 | ||||
| VMObject::~VMObject() | ||||
| { | ||||
|     { | ||||
|         ScopedSpinLock lock(m_on_deleted_lock); | ||||
|         for (auto& it : m_on_deleted) | ||||
|             it->vmobject_deleted(*this); | ||||
|         m_on_deleted.clear(); | ||||
|     } | ||||
| 
 | ||||
|     MM.unregister_vmobject(*this); | ||||
|     ASSERT(m_regions_count.load(AK::MemoryOrder::memory_order_relaxed) == 0); | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Tom
						Tom