serenity/Kernel
Andreas Kling f1b5def8fd Kernel: Factor address space management out of the Process class
This patch adds Space, a class representing a process's address space.

- Each Process has a Space.
- The Space owns the PageDirectory and all Regions in the Process.

This allows us to reorganize sys$execve() so that it constructs and
populates a new Space fully before committing to it.

Previously, we would construct the new address space while still
running in the old one, and encountering an error meant we had to do
tedious and error-prone rollback.

Those problems are now gone, replaced by what's hopefully a set of much
smaller problems and missing cleanups. :^)
2021-02-08 18:27:28 +01:00
..
ACPI Everywhere: Replace dbgln<flag>(...) with dbgln_if(flag, ...) 2021-02-08 18:08:55 +01:00
API Userland: Add LibSystem and funnel all syscalls through it 2021-02-05 12:23:39 +01:00
Arch Everywhere: Replace dbgln<flag>(...) with dbgln_if(flag, ...) 2021-02-08 18:08:55 +01:00
Devices Kernel: Factor address space management out of the Process class 2021-02-08 18:27:28 +01:00
FileSystem Kernel: Factor address space management out of the Process class 2021-02-08 18:27:28 +01:00
Heap Meta: Split debug defines into multiple headers. 2021-01-26 21:20:00 +01:00
Interrupts Everywhere: Replace dbgln<flag>(...) with dbgln_if(flag, ...) 2021-02-08 18:08:55 +01:00
Modules
Net Everywhere: Replace dbgln<flag>(...) with dbgln_if(flag, ...) 2021-02-08 18:08:55 +01:00
PCI Everywhere: Replace dbgln<flag>(...) with dbgln_if(flag, ...) 2021-02-08 18:08:55 +01:00
Storage Everywhere: Replace dbgln<flag>(...) with dbgln_if(flag, ...) 2021-02-08 18:08:55 +01:00
Syscalls Kernel: Factor address space management out of the Process class 2021-02-08 18:27:28 +01:00
Tasks
Time Everywhere: Replace dbgln<flag>(...) with dbgln_if(flag, ...) 2021-02-08 18:08:55 +01:00
TTY Everywhere: Replace dbgln<flag>(...) with dbgln_if(flag, ...) 2021-02-08 18:08:55 +01:00
VM Kernel: Factor address space management out of the Process class 2021-02-08 18:27:28 +01:00
.gitignore Meta: Expect sync-local.sh script at repository root 2021-01-30 09:18:46 +01:00
Assertions.h
CMakeLists.txt Kernel: Factor address space management out of the Process class 2021-02-08 18:27:28 +01:00
CMOS.cpp
CMOS.h
CommandLine.cpp
CommandLine.h
Console.cpp
Console.h
CoreDump.cpp Kernel: Factor address space management out of the Process class 2021-02-08 18:27:28 +01:00
CoreDump.h
Debug.h.in Kernel: Add NE2000 network card driver 2021-02-05 09:35:02 +01:00
DMI.cpp Kernel: Set file size for smbios_entry_point and DMI blobs in ProcFS 2021-02-01 17:13:23 +01:00
DMI.h Kernel: Set file size for smbios_entry_point and DMI blobs in ProcFS 2021-02-01 17:13:23 +01:00
DoubleBuffer.cpp
DoubleBuffer.h
Forward.h Kernel: Factor address space management out of the Process class 2021-02-08 18:27:28 +01:00
FutexQueue.cpp Everywhere: Replace dbgln<flag>(...) with dbgln_if(flag, ...) 2021-02-08 18:08:55 +01:00
FutexQueue.h
init.cpp Kernel: Add NE2000 network card driver 2021-02-05 09:35:02 +01:00
IO.h
KBuffer.h
KBufferBuilder.cpp
KBufferBuilder.h
kprintf.cpp
KResult.h Kernel: KResultOr can use the same storage as the object for the error 2021-02-08 18:00:38 +01:00
kstdio.h
KSyms.cpp Everywhere: Remove some bitrotted "#if 0" blocks 2021-02-03 11:17:47 +01:00
KSyms.h
linker.ld
Lock.cpp Everywhere: Replace dbgln<flag>(...) with dbgln_if(flag, ...) 2021-02-08 18:08:55 +01:00
Lock.h Everywhere: Use CMake to generate AK/Debug.h. 2021-01-25 09:47:36 +01:00
LockMode.h
mkmap.sh
Module.h
Multiboot.h
PerformanceEventBuffer.cpp Kernel: Factor address space management out of the Process class 2021-02-08 18:27:28 +01:00
PerformanceEventBuffer.h
PhysicalAddress.h
Process.cpp Kernel: Factor address space management out of the Process class 2021-02-08 18:27:28 +01:00
Process.h Kernel: Factor address space management out of the Process class 2021-02-08 18:27:28 +01:00
ProcessGroup.cpp
ProcessGroup.h
Ptrace.cpp
Ptrace.h
Random.cpp Kernel: Make KernelRng thread-safe 2021-01-28 08:15:26 +01:00
Random.h Kernel: Don't left-shift 1 (signed) 31 times 2021-02-05 21:28:06 +01:00
RTC.cpp
RTC.h
Scheduler.cpp Everywhere: Replace dbgln<flag>(...) with dbgln_if(flag, ...) 2021-02-08 18:08:55 +01:00
Scheduler.h Kernel: Remove ancient unused Scheduler::beep() declaration 2021-02-07 20:45:09 +01:00
SpinLock.h
StdLib.cpp
StdLib.h
Syscall.cpp Kernel: Factor address space management out of the Process class 2021-02-08 18:27:28 +01:00
Thread.cpp Kernel: Factor address space management out of the Process class 2021-02-08 18:27:28 +01:00
Thread.h Everywhere: Replace dbgln<flag>(...) with dbgln_if(flag, ...) 2021-02-08 18:08:55 +01:00
ThreadBlockers.cpp Everywhere: Replace dbgln<flag>(...) with dbgln_if(flag, ...) 2021-02-08 18:08:55 +01:00
ThreadTracer.cpp
ThreadTracer.h
TimerQueue.cpp
TimerQueue.h
UBSanitizer.cpp Kernel: KUBSAN implementation of returns-nonnull-attribute 2021-02-07 10:22:03 +01:00
UBSanitizer.h Kernel: KUBSAN implementation of returns-nonnull-attribute 2021-02-07 10:22:03 +01:00
UnixTypes.h Kernel: Fix enum of sysconf values to be in the correct order 2021-02-01 17:13:23 +01:00
UnveilNode.h
UserOrKernelBuffer.cpp
UserOrKernelBuffer.h
VirtualAddress.h
WaitQueue.cpp Everywhere: Replace dbgln<flag>(...) with dbgln_if(flag, ...) 2021-02-08 18:08:55 +01:00
WaitQueue.h Kernel: Fix some race conditions with Lock and waiting/waking threads 2021-01-25 22:54:55 +01:00