mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 10:22:45 +00:00 
			
		
		
		
	 bb58a4d943
			
		
	
	
		bb58a4d943
		
	
	
	
	
		
			
			The default template argument is only used in one place, and it looks like it was probably just an oversight. The rest of the Kernel code all uses u8 as the type. So lets make that the default and remove the unused template argument, as there doesn't seem to be a reason to allow the size to be customizable.
		
			
				
	
	
		
			48 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <AK/RedBlackTree.h>
 | |
| #include <AK/Traits.h>
 | |
| #include <Kernel/Locking/Spinlock.h>
 | |
| #include <Kernel/Memory/VirtualRange.h>
 | |
| 
 | |
| namespace Kernel::Memory {
 | |
| 
 | |
| class VirtualRangeAllocator {
 | |
| public:
 | |
|     VirtualRangeAllocator();
 | |
|     ~VirtualRangeAllocator() = default;
 | |
| 
 | |
|     void initialize_with_range(VirtualAddress, size_t);
 | |
|     void initialize_from_parent(VirtualRangeAllocator const&);
 | |
| 
 | |
|     Optional<VirtualRange> allocate_anywhere(size_t, size_t alignment = PAGE_SIZE);
 | |
|     Optional<VirtualRange> allocate_specific(VirtualAddress, size_t);
 | |
|     Optional<VirtualRange> allocate_randomized(size_t, size_t alignment);
 | |
|     void deallocate(VirtualRange const&);
 | |
| 
 | |
|     void dump() const;
 | |
| 
 | |
|     bool contains(VirtualRange const& range) const { return m_total_range.contains(range); }
 | |
| 
 | |
| private:
 | |
|     void carve_at_iterator(auto&, VirtualRange const&);
 | |
| 
 | |
|     RedBlackTree<FlatPtr, VirtualRange> m_available_ranges;
 | |
|     VirtualRange m_total_range;
 | |
|     mutable Spinlock m_lock;
 | |
| };
 | |
| 
 | |
| }
 | |
| 
 | |
| namespace AK {
 | |
| template<>
 | |
| struct Traits<Kernel::Memory::VirtualRange> : public GenericTraits<Kernel::Memory::VirtualRange> {
 | |
|     static constexpr bool is_trivial() { return true; }
 | |
| };
 | |
| }
 |