1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 09:38:11 +00:00
serenity/Kernel/Memory
Andreas Kling 02a95a196f Kernel: Use AddressSpace region tree for range allocation
This patch stops using VirtualRangeAllocator in AddressSpace and instead
looks for holes in the region tree when allocating VM space.

There are many benefits:

- VirtualRangeAllocator is non-intrusive and would call kmalloc/kfree
  when used. This new solution is allocation-free. This was a source
  of unpleasant MM/kmalloc deadlocks.

- We consolidate authority on what the address space looks like in a
  single place. Previously, we had both the range allocator *and* the
  region tree both being used to determine if an address was valid.
  Now there is only the region tree.

- Deallocation of VM when splitting regions is no longer complicated,
  as we don't need to keep two separate trees in sync.
2022-04-03 21:51:58 +02:00
..
AddressSpace.cpp Kernel: Use AddressSpace region tree for range allocation 2022-04-03 21:51:58 +02:00
AddressSpace.h Kernel: Use AddressSpace region tree for range allocation 2022-04-03 21:51:58 +02:00
AllocationStrategy.h Kernel: Rename Kernel/VM/ to Kernel/Memory/ 2021-08-06 14:05:58 +02:00
AnonymousVMObject.cpp Kernel: Use default constructors/destructors 2022-03-17 00:51:36 -07:00
AnonymousVMObject.h Kernel: Make AnonymousVMObject COW-Bitmap allocation OOM-fallible 2022-02-11 17:49:46 +02:00
InodeVMObject.cpp Kernel: Use default constructors/destructors 2022-03-17 00:51:36 -07:00
InodeVMObject.h Kernel: Make SharedInodeVMObject pages Bitmap allocation OOM-fallible 2022-02-11 17:49:46 +02:00
MappedROM.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
MemoryManager.cpp Kernel: Make MemoryManager compile on aarch64 2022-04-02 19:34:20 -07:00
MemoryManager.h Kernel: Make MemoryManager compile on aarch64 2022-04-02 19:34:20 -07:00
PageDirectory.cpp Kernel: Use AddressSpace region tree for range allocation 2022-04-03 21:51:58 +02:00
PageDirectory.h Kernel: Use AddressSpace region tree for range allocation 2022-04-03 21:51:58 +02:00
PageFaultResponse.h Kernel: Rename Kernel/VM/ to Kernel/Memory/ 2021-08-06 14:05:58 +02:00
PhysicalPage.cpp Kernel: Move Kernel/Memory/ code into Kernel::Memory namespace 2021-08-06 14:05:58 +02:00
PhysicalPage.h Kernel: Move Kernel/Memory/ code into Kernel::Memory namespace 2021-08-06 14:05:58 +02:00
PhysicalRegion.cpp Kernel: Use default constructors/destructors 2022-03-17 00:51:36 -07:00
PhysicalRegion.h Kernel: Remove the kmalloc_eternal heap :^) 2021-12-28 21:02:38 +01:00
PhysicalZone.cpp Kernel: Add implied auto qualifiers in Memory 2022-01-09 23:29:57 -08:00
PhysicalZone.h Kernel: Remove the kmalloc_eternal heap :^) 2021-12-28 21:02:38 +01:00
PrivateInodeVMObject.cpp Kernel: Use default constructors/destructors 2022-03-17 00:51:36 -07:00
PrivateInodeVMObject.h Kernel: Make SharedInodeVMObject pages Bitmap allocation OOM-fallible 2022-02-11 17:49:46 +02:00
Region.cpp Kernel: Use AddressSpace region tree for range allocation 2022-04-03 21:51:58 +02:00
Region.h Kernel: Store AddressSpace memory regions in an IntrusiveRedBlackTree 2022-04-03 21:51:58 +02:00
RingBuffer.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
RingBuffer.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ScatterGatherList.cpp Kernel: Propagate overflow errors from Memory::page_round_up 2021-12-28 23:08:50 +01:00
ScatterGatherList.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ScopedAddressSpaceSwitcher.cpp Kernel: Access MemoryManager static functions statically 2021-10-02 18:16:15 +02:00
ScopedAddressSpaceSwitcher.h Kernel: Rename ProcessPagingScope => ScopedAddressSpaceSwitcher 2021-09-06 18:56:51 +02:00
SharedInodeVMObject.cpp Kernel: Make Inode::set_shared_vmobject() OOM-fallible 2022-02-14 11:35:20 +01:00
SharedInodeVMObject.h Kernel: Make SharedInodeVMObject pages Bitmap allocation OOM-fallible 2022-02-11 17:49:46 +02:00
TypedMapping.h Kernel: Make map_typed() & map_typed_writable() fallible using ErrorOr 2022-01-13 22:40:25 +01:00
VirtualRange.cpp Kernel: Use AddressSpace region tree for range allocation 2022-04-03 21:51:58 +02:00
VirtualRange.h Kernel: Use AddressSpace region tree for range allocation 2022-04-03 21:51:58 +02:00
VirtualRangeAllocator.cpp Kernel: Change static constexpr variables to constexpr where possible 2022-02-09 21:04:51 +00:00
VirtualRangeAllocator.h Kernel: Use AddressSpace region tree for range allocation 2022-04-03 21:51:58 +02:00
VMObject.cpp Kernel: Remove infallible VMObject resource factory functions 2022-01-15 22:16:00 +02:00
VMObject.h Kernel: Remove infallible VMObject resource factory functions 2022-01-15 22:16:00 +02:00