mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 17:02:45 +00:00 
			
		
		
		
	Kernel: Stop exposing RegionTree API for VM range allocation
...and remove the last remaining client of the API. It's no longer possible to ask the RegionTree for a VM range. You can only ask it to place your Region somewhere in available space.
This commit is contained in:
		
							parent
							
								
									07f3d09c55
								
							
						
					
					
						commit
						e89c9ed2ca
					
				
					 2 changed files with 6 additions and 5 deletions
				
			
		|  | @ -456,8 +456,9 @@ UNMAP_AFTER_INIT void MemoryManager::initialize_physical_pages() | ||||||
| 
 | 
 | ||||||
|     // Allocate a virtual address range for our array
 |     // Allocate a virtual address range for our array
 | ||||||
|     // This looks awkward, but it basically creates a dummy region to occupy the address range permanently.
 |     // This looks awkward, but it basically creates a dummy region to occupy the address range permanently.
 | ||||||
|     auto range = MUST(m_region_tree.try_allocate_anywhere(physical_page_array_pages * PAGE_SIZE)); |     auto& region = *MUST(Region::create_unbacked()).leak_ptr(); | ||||||
|     MUST(m_region_tree.place_specifically(*MUST(Region::create_unbacked()).leak_ptr(), range)); |     MUST(m_region_tree.place_anywhere(region, physical_page_array_pages * PAGE_SIZE)); | ||||||
|  |     auto range = region.range(); | ||||||
| 
 | 
 | ||||||
|     // Now that we have our special m_physical_pages_region region with enough pages to hold the entire array
 |     // Now that we have our special m_physical_pages_region region with enough pages to hold the entire array
 | ||||||
|     // try to map the entire region into kernel space so we always have it
 |     // try to map the entire region into kernel space so we always have it
 | ||||||
|  |  | ||||||
|  | @ -39,13 +39,13 @@ public: | ||||||
| 
 | 
 | ||||||
|     ErrorOr<NonnullOwnPtr<Memory::Region>> create_identity_mapped_region(PhysicalAddress, size_t); |     ErrorOr<NonnullOwnPtr<Memory::Region>> create_identity_mapped_region(PhysicalAddress, size_t); | ||||||
| 
 | 
 | ||||||
|  |     void delete_all_regions_assuming_they_are_unmapped(); | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|     ErrorOr<VirtualRange> try_allocate_anywhere(size_t size, size_t alignment = PAGE_SIZE); |     ErrorOr<VirtualRange> try_allocate_anywhere(size_t size, size_t alignment = PAGE_SIZE); | ||||||
|     ErrorOr<VirtualRange> try_allocate_specific(VirtualAddress base, size_t size); |     ErrorOr<VirtualRange> try_allocate_specific(VirtualAddress base, size_t size); | ||||||
|     ErrorOr<VirtualRange> try_allocate_randomized(size_t size, size_t alignment = PAGE_SIZE); |     ErrorOr<VirtualRange> try_allocate_randomized(size_t size, size_t alignment = PAGE_SIZE); | ||||||
| 
 | 
 | ||||||
|     void delete_all_regions_assuming_they_are_unmapped(); |  | ||||||
| 
 |  | ||||||
| private: |  | ||||||
|     Spinlock m_lock; |     Spinlock m_lock; | ||||||
| 
 | 
 | ||||||
|     IntrusiveRedBlackTree<&Region::m_tree_node> m_regions; |     IntrusiveRedBlackTree<&Region::m_tree_node> m_regions; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling