Andreas Kling
df34f7b90b
Kernel: Use an IntrusiveRedBlackTree for kernel regions
...
We were already using a non-intrusive RedBlackTree, and since the kernel
regions tree is non-owning, this is a trivial conversion that makes a
bunch of the tree operations infallible (by being allocation-free.) :^)
2022-01-16 23:31:01 +01:00
Andreas Kling
d8206c1059
Kernel: Don't release/relock spinlocks repeatedly during space teardown
...
Grab the page directory and MM locks once at the start of address space
teardown, then hold onto them across all the region unmapping work.
2022-01-12 14:52:47 +01:00
Andreas Kling
2323cdd914
Kernel: Do less unnecessary work when tearing down process address space
...
When deleting an entire AddressSpace, we don't need to do TLB flushes
at all (since the entire page directory is going away anyway).
We also don't need to deallocate VM ranges one by one, since the entire
VM range allocator will be deleted anyway.
2022-01-12 14:52:47 +01:00
Andreas Kling
3399b6c57f
Kernel: Remove old SlabAllocator :^)
...
This is no longer useful since kmalloc() does automatic slab allocation
without any of the limitations of the old SlabAllocator. :^)
2021-12-26 21:22:59 +01:00
Andreas Kling
43099fb387
Kernel: Remove all uses of MAKE_SLAB_ALLOCATED()
...
Objects that were previously allocated via slab_alloc()/slab_dealloc()
now go through kmalloc()/kfree_sized() instead.
2021-12-26 21:22:59 +01:00
Idan Horowitz
5f4a67434c
Kernel: Move userspace virtual address range base to 0x10000
...
Now that the shared bottom 2 MiB virtual address mappings are gone
userspace can use lower virtual addresses.
2021-12-22 00:02:36 -08:00
Idan Horowitz
f415218afe
Kernel+LibC: Implement sigaltstack()
...
This is required for compiling wine for serenity
2021-12-01 21:44:11 +02:00
Idan Horowitz
ff6b43734c
Kernel: Add Region::clear_to_zero
...
This helper method can be used to quickly and efficiently zero out a
region.
2021-12-01 21:44:11 +02:00
James Mintram
eb33df0c30
Kernel: Add an x86 include check+error in x86/PageFault.h
2021-12-01 11:22:04 -08:00
Andrew Kaster
a92132e44a
Kernel: Resolve clang-tidy readability-implicit-bool-conversion warnings
...
... In files included from Kernel/Process.cpp and Kernel/Thread.cpp
2021-11-14 22:52:35 +01:00
Andreas Kling
79fa9765ca
Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T>
...
We now use AK::Error and AK::ErrorOr<T> in both kernel and userspace!
This was a slightly tedious refactoring that took a long time, so it's
not unlikely that some bugs crept in.
Nevertheless, it does pass basic functionality testing, and it's just
real nice to finally see the same pattern in all contexts. :^)
2021-11-08 01:10:53 +01:00
Ali Mohammad Pur
5a0cdb15b0
AK+Everywhere: Reduce the number of template parameters of IntrusiveList
...
This makes the user-facing type only take the node member pointer, and
lets the compiler figure out the other needed types from that.
2021-09-10 18:05:46 +03:00
Andreas Kling
e3a716ceff
Kernel: Make Memory::Region::map() return KResult
...
..and use TRY() at the call sites to propagate errors. :^)
2021-09-06 13:06:05 +02:00
Brian Gianforcaro
16ad297078
Kernel: Annotate Memory::Region APIs with [[nodiscard]]
...
This is an attempt to mitigate callers not observing the result of
map or remap.
2021-08-25 00:18:42 +02:00
sin-ack
0a18425cbb
Kernel: Make Memory::Region allocation functions return KResultOr
...
This makes for some nicer handling of errors compared to checking an
OwnPtr for null state.
2021-08-15 15:41:02 +02:00
Andreas Kling
2cd8b21974
Kernel: Add convenience values to the Memory::Region::Access enum
...
Instead of `Memory::Region::Access::Read | Memory::Region::AccessWrite`
you can now say `Memory::Region::Access::ReadWrite`.
2021-08-06 22:25:00 +02:00
Andreas Kling
47bdd7c3a0
Kernel: Rename a very long enum to ShouldDeallocateVirtualRange
...
ShouldDeallocateVirtualMemoryVirtualRange was a bit on the long side.
2021-08-06 21:45:05 +02:00
Andreas Kling
cd5faf4e42
Kernel: Rename Range => VirtualRange
...
...and also RangeAllocator => VirtualRangeAllocator.
This clarifies that the ranges we're dealing with are *virtual* memory
ranges and not anything else.
2021-08-06 14:05:58 +02:00
Andreas Kling
93d98d4976
Kernel: Move Kernel/Memory/ code into Kernel::Memory namespace
2021-08-06 14:05:58 +02:00
Andreas Kling
a1d7ebf85a
Kernel: Rename Kernel/VM/ to Kernel/Memory/
...
This directory isn't just about virtual memory, it's about all kinds
of memory management.
2021-08-06 14:05:58 +02:00