ladybird/Kernel/Syscalls
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
..
access.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
alarm.cpp Kernel: Remove unnecessary includes from Thread.h 2022-01-30 16:21:59 +01:00
anon_create.cpp Kernel: Mark sys$anon_create() as not needing the big lock 2022-03-08 00:19:49 +01:00
beep.cpp Kernel: Add CommandLine option to disable or enable the PC speaker 2022-01-23 00:40:54 +00:00
chdir.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
chmod.cpp Kernel: Mark sys$chmod() as not needing the big lock 2022-03-09 16:43:00 +01:00
chown.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
clock.cpp Kernel: Use AddressSpace region tree for range allocation 2022-04-03 21:51:58 +02:00
debug.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
disown.cpp Kernel: Handle promise violations in the syscall handler 2021-12-29 18:08:15 +01:00
dup2.cpp Kernel: Mark sys$dup2() as not needing the big lock 2022-03-09 16:43:00 +01:00
emuctl.cpp Kernel: Mark sys$emuctl() as not needing the big lock 2022-03-09 16:43:00 +01:00
execve.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
exit.cpp Kernel: Fix a few typos 2021-10-01 00:51:49 +01:00
fcntl.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
fork.cpp Kernel: Store AddressSpace memory regions in an IntrusiveRedBlackTree 2022-04-03 21:51:58 +02:00
fsync.cpp Kernel: Mark sys$fsync() as not needing the big lock 2022-03-08 00:19:49 +01:00
ftruncate.cpp Kernel: Mark sys$ftruncate() as not needing the big lock 2022-03-09 16:43:00 +01:00
futex.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
get_dir_entries.cpp Kernel: Convert process file descriptor table to a SpinlockProtected 2022-01-29 02:17:06 +01:00
get_stack_bounds.cpp Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
getrandom.cpp Kernel: Handle promise violations in the syscall handler 2021-12-29 18:08:15 +01:00
getuid.cpp Kernel: Handle promise violations in the syscall handler 2021-12-29 18:08:15 +01:00
hostname.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
inode_watcher.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ioctl.cpp Kernel: Convert process file descriptor table to a SpinlockProtected 2022-01-29 02:17:06 +01:00
keymap.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
kill.cpp Kernel: Handle promise violations in the syscall handler 2021-12-29 18:08:15 +01:00
link.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
lseek.cpp Kernel: Mark sys$lseek() as not needing the big lock 2022-03-09 16:43:00 +01:00
mkdir.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
mknod.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
mmap.cpp Kernel: Use AddressSpace region tree for range allocation 2022-04-03 21:51:58 +02:00
mount.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
open.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
perf_event.cpp Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
pipe.cpp Kernel: Switch process file descriptor table from spinlock to mutex 2022-01-29 02:17:09 +01:00
pledge.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
poll.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
prctl.cpp Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
process.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
profiling.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ptrace.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
purge.cpp Kernel: Handle promise violations in the syscall handler 2021-12-29 18:08:15 +01:00
read.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
readlink.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
realpath.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
rename.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
resource.cpp Kernel: Add getrusage() syscall 2022-02-28 20:09:37 +01:00
rmdir.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
sched.cpp Kernel: Remove unnecessary includes from Thread.h 2022-01-30 16:21:59 +01:00
sendfd.cpp Kernel: Switch process file descriptor table from spinlock to mutex 2022-01-29 02:17:09 +01:00
setpgid.cpp Kernel: Handle promise violations in the syscall handler 2021-12-29 18:08:15 +01:00
setuid.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
sigaction.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
socket.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
stat.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
statvfs.cpp Kernel: Implement f_basetype in statvfs 2022-04-03 19:15:14 +02:00
sync.cpp Kernel: Handle promise violations in the syscall handler 2021-12-29 18:08:15 +01:00
sysconf.cpp Kernel: Expose maximum argument limit in sysconf 2022-02-13 22:06:54 +02:00
thread.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
times.cpp Kernel: Handle promise violations in the syscall handler 2021-12-29 18:08:15 +01:00
umask.cpp Kernel: Handle promise violations in the syscall handler 2021-12-29 18:08:15 +01:00
uname.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
unlink.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
unveil.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
utime.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
waitid.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
write.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00