ladybird/Kernel
Andreas Kling dd58d0f650 Kernel: Uncommit a shared COW page when discovering it was unshared
When we hit a COW fault and discover than no other process is sharing
the physical page, we simply remap it r/w and save ourselves the
trouble. When this happens, we can also give back (uncommit) one of our
shared committed COW pages, since we won't be needing it.

We had this optimization before, but I mistakenly removed it in
50472fd69f since I had misunderstood
it to be the reason for a panic.
2021-08-05 17:41:58 +02:00
..
ACPI Kernel: Don't truncate physical address in ACPI table to 32 bits 2021-07-18 22:09:05 +02:00
API Kernel+LibSystem: Add a 4th syscall argument 2021-07-25 14:08:50 +02:00
Arch Kernel: Remove ThreadTracer.h include from Process.h / Thread.h 2021-08-01 08:10:16 +02:00
Bus Kernel: Remove ContiguousVMObject, let AnonymousVMObject do the job 2021-07-25 18:44:47 +02:00
Devices Kernel: Make NullDevice (/dev/null) seekable 2021-08-03 10:36:48 +02:00
FileSystem Kernel: Handle OOM in DiskCache when mounting Ext2 filesystems 2021-08-03 18:54:23 +02:00
Graphics Kernel: Remove unused header includes 2021-08-01 08:10:16 +02:00
Heap Kernel+AK: Generate compile-time error for non-sized delete 2021-07-16 20:51:13 +02:00
Interrupts Kernel: Remove unused header includes 2021-08-01 08:10:16 +02:00
Modules Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Net Kernel: Handle OOM when allocating Packet KBuffers 2021-08-03 18:54:23 +02:00
Prekernel Prekernel: Disable KASAN, so it has no effect when enabled 2021-07-30 16:58:09 +02:00
Storage Everywhere: Make use of container version of all_of 2021-08-03 10:46:43 +02:00
Syscalls Kernel: Handle OOM from KBuffer creation in sys$module() 2021-08-03 18:54:23 +02:00
Tasks Kernel: Make VirtualFileSystem::sync() static 2021-07-11 00:26:17 +02:00
Time Kernel: Remove unused header includes 2021-08-01 08:10:16 +02:00
TTY Kernel: Convert MasterPTY creation to use DoubleBuffer factory 2021-08-03 18:54:23 +02:00
VirtIO Kernel: Fix inverted check in VirtIOConsolePort 2021-07-14 12:33:07 +02:00
VM Kernel: Uncommit a shared COW page when discovering it was unshared 2021-08-05 17:41:58 +02:00
AddressSanitizer.cpp Everywhere: Use bgianf@serenityos.org for my copyright attribution 2021-04-22 21:15:54 +02:00
AddressSanitizer.h Everywhere: Use bgianf@serenityos.org for my copyright attribution 2021-04-22 21:15:54 +02:00
Assertions.h AK+Kernel: Print TODO when a TODO() is executed 2021-08-04 11:01:16 +02:00
AtomicEdgeAction.h Kernel: Add AtomicEdgeAction class 2021-07-07 21:57:01 +02:00
BootInfo.h Kernel: Support loading the kernel at almost arbitrary virtual addresses 2021-07-27 13:15:16 +02:00
CMakeLists.txt Kernel: Use our toolchain's c++filt tool for the kernel map 2021-07-29 10:38:31 +02:00
CMOS.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
CMOS.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
CommandLine.cpp Kernel: Un-unmap-after-init CommandLine::boot_mode() 2021-07-26 11:33:14 +02:00
CommandLine.h Kernel/CommandLine: Add option to disable physical networking hardware 2021-06-09 22:44:09 +04:30
ConsoleDevice.cpp Kernel: Move special sections into Sections.h 2021-06-24 00:38:23 +02:00
ConsoleDevice.h Kernel: Make various T::class_name() and similar return StringView 2021-07-11 01:46:59 +02:00
CoreDump.cpp Kernel: Rename VFS => VirtualFileSystem 2021-07-11 00:25:24 +02:00
CoreDump.h Kernel: Use Forward.h headers more 2021-07-11 14:14:51 +02:00
Debug.h.in USB: Further Implement USB Structures 2021-06-12 18:17:25 +04:30
DoubleBuffer.cpp Kernel: Remove OOM unsafe DoubleBuffer constructor 2021-08-03 18:54:23 +02:00
DoubleBuffer.h Kernel: Remove OOM unsafe DoubleBuffer constructor 2021-08-03 18:54:23 +02:00
embedmap.sh Kernel: Make new kernel build process work on macOS 2021-07-15 11:04:30 +02:00
Forward.h Kernel: Add MemoryManager to Forward.h 2021-08-05 17:41:58 +02:00
FutexQueue.cpp Kernel: Fix futex race that could lead to thread waiting forever 2021-07-07 10:05:55 +02:00
FutexQueue.h Kernel: Fix futex race that could lead to thread waiting forever 2021-07-07 10:05:55 +02:00
GlobalProcessExposed.cpp Kernel: Expose link speed and duplex through /proc/net/adapters 2021-08-03 10:20:51 +02:00
init.cpp Kernel: Mark the stack check guard as READONLY_AFTER_INIT 2021-07-27 14:50:10 +02:00
IO.h Kernel: Specify I/O size for BMIDEChannel 2021-06-28 15:55:00 +02:00
KBuffer.h Kernel: Remove OOM unsafe API KBuffer::create_with_size 2021-08-03 18:54:23 +02:00
KBufferBuilder.cpp Kernel: Remove KBufferBuilder's can_expand restriction 2021-07-20 18:05:05 +02:00
KBufferBuilder.h Kernel: Remove KBufferBuilder's can_expand restriction 2021-07-20 18:05:05 +02:00
KLexicalPath.cpp Kernel: Make KLexicalPath::basename() more compliant 2021-07-11 14:10:58 +02:00
KLexicalPath.h Kernel: Add KLexicalPath::try_join and use it 2021-07-07 15:32:17 +02:00
kprintf.cpp Kernel: Remove unused header includes 2021-08-01 08:10:16 +02:00
KResult.h AK+Kernel: Fix perfect forwarding constructors shadowing others 2021-07-08 10:11:00 +02:00
kstdio.h Kernel: Add dbgputch() to kstdio.h 2021-06-24 10:29:09 +02:00
KString.cpp Kernel: Allow passing null pointer to delete 2021-07-14 13:12:25 +02:00
KString.h Kernel: Add formatter function for OwnPtr<KString> 2021-07-07 15:32:17 +02:00
KSyms.cpp Kernel: Print panic backtrace to both the screen and serial 2021-08-04 20:14:54 +02:00
KSyms.h Kernel: Print panic backtrace to both the screen and serial 2021-08-04 20:14:54 +02:00
linker.ld Kernel: Support loading the kernel at almost arbitrary virtual addresses 2021-07-27 13:15:16 +02:00
LockMode.h Kernel: Allow Lock to block from BlockCondition 2021-07-12 11:27:18 +02:00
MiniStdLib.cpp Kernel: Introduce basic pre-kernel environment 2021-07-18 17:31:13 +02:00
mkmap.sh Kernel: Use our toolchain's c++filt tool for the kernel map 2021-07-29 10:38:31 +02:00
Module.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Multiboot.h Prekernel: Export some multiboot parameters in our own BootInfo struct 2021-07-27 13:15:16 +02:00
Mutex.cpp Kernel: Only include AK/SourceLocation.h if LOCK_DEBUG is enabled 2021-08-01 08:10:16 +02:00
Mutex.h Kernel: Allow MutexLocker to be conditionally initialized 2021-07-20 03:21:14 +02:00
Panic.cpp Kernel: Print panic backtrace to both the screen and serial 2021-08-04 20:14:54 +02:00
Panic.h Kernel/Graphics + SystemServer: Support text mode properly 2021-05-16 19:58:33 +02:00
PerformanceEventBuffer.cpp Kernel: Rename PerformanceEvent methods to be more ARCH independent 2021-07-19 08:46:55 +02:00
PerformanceEventBuffer.h Kernel: Rename PerformanceEvent methods to be more ARCH independent 2021-07-19 08:46:55 +02:00
PerformanceManager.h Kernel: Rename PerformanceEvent methods to be more ARCH independent 2021-07-19 08:46:55 +02:00
PhysicalAddress.h Kernel: Move PhysicalPage classes out of the heap into an array 2021-07-08 11:43:34 +02:00
Process.cpp Kernel: Remove ThreadTracer.h include from Process.h / Thread.h 2021-08-01 08:10:16 +02:00
Process.h Kernel: Remove ThreadTracer.h include from Process.h / Thread.h 2021-08-01 08:10:16 +02:00
ProcessExposed.cpp Kernel: Simplify ProcFS generated buffer caching 2021-07-20 18:05:05 +02:00
ProcessExposed.h Kernel/ProcFS: Make various things superuser-only once again 2021-07-28 18:59:53 +02:00
ProcessGroup.cpp Kernel: Standardize the header include style to 'include <Kernel/...>' 2021-07-11 21:37:38 +02:00
ProcessGroup.h Kernel: Remove unused header includes 2021-08-01 08:10:16 +02:00
ProcessSpecificExposed.cpp Kernel: Make purgeable memory a VMObject level concept (again) 2021-07-25 17:28:05 +02:00
Random.cpp Kernel: Rename Locker => MutexLocker 2021-07-18 01:53:04 +02:00
Random.h Kernel: Rename Lock to Mutex 2021-07-17 21:10:32 +02:00
RTC.cpp Kernel: Ensure we read valid values from the RTC CMOS registers 2021-08-04 19:53:04 +02:00
RTC.h Kernel: Ensure we read valid values from the RTC CMOS registers 2021-08-04 19:53:04 +02:00
SanCov.cpp Kernel: Remove unused header includes 2021-08-01 08:10:16 +02:00
Scheduler.cpp Kernel: Introduce ProcessorSpecific<T> for per-CPU data structures 2021-07-27 14:32:30 +02:00
Scheduler.h Kernel: Remove unused Scheduler::yield_from_critical() 2021-07-26 00:39:10 +02:00
Sections.h Kernel: Support loading the kernel at almost arbitrary virtual addresses 2021-07-27 13:15:16 +02:00
SpinLock.h Kernel: Pull apart CPU.h 2021-06-24 00:38:23 +02:00
StdLib.cpp Kernel: Introduce basic pre-kernel environment 2021-07-18 17:31:13 +02:00
StdLib.h Everywhere: Fix incorrect usages of AK::Checked 2021-07-04 20:08:28 +01:00
Syscall.cpp Kernel+LibSystem: Add a 4th syscall argument 2021-07-25 14:08:50 +02:00
Thread.cpp Kernel: Add option to build with coverage instrumentation and KCOV 2021-07-26 17:40:28 +02:00
Thread.h Kernel: Remove ThreadTracer.h include from Process.h / Thread.h 2021-08-01 08:10:16 +02:00
ThreadBlockers.cpp Kernel: Fix bogus check in Thread::WaitBlockCondition::finalize() 2021-07-16 15:18:47 +02:00
ThreadTracer.cpp Kernel: Remove unused header includes in root kernel tree 2021-07-11 21:37:38 +02:00
ThreadTracer.h Everywhere: Use nothrow new with adopt_{ref,own}_if_nonnull 2021-06-24 17:35:49 +04:30
TimerQueue.cpp Kernel: Do not cancel stale timers when servicing sys$alarm 2021-08-03 18:44:01 +02:00
TimerQueue.h Kernel: Do not cancel stale timers when servicing sys$alarm 2021-08-03 18:44:01 +02:00
UBSanitizer.cpp Kernel: Pull apart CPU.h 2021-06-24 00:38:23 +02:00
UnixTypes.h Kernel+LibC: Add linger to sys/sockets.h 2021-07-29 19:35:03 +01:00
UnveilNode.h Kernel: Allow unveiling subfolders regardless of parent's permissions 2021-06-08 12:15:04 +02:00
UserOrKernelBuffer.cpp Kernel: Add an API for turning a UserOrKernelBuffer into a KString 2021-07-17 22:07:49 +02:00
UserOrKernelBuffer.h Kernel: Add an API for turning a UserOrKernelBuffer into a KString 2021-07-17 22:07:49 +02:00
VirtualAddress.h Kernel: Make VirtualAddress::page_base() work with 64-bit addresses 2021-07-18 17:31:13 +02:00
WaitQueue.cpp Everywhere: Use "the SerenityOS developers." in copyright headers 2021-04-29 00:59:26 +02:00
WaitQueue.h Everywhere: Use "the SerenityOS developers." in copyright headers 2021-04-29 00:59:26 +02:00
WorkQueue.cpp Kernel: Move special sections into Sections.h 2021-06-24 00:38:23 +02:00
WorkQueue.h Kernel: Use plain Function objects for the WorkQueue 2021-05-19 21:36:57 +02:00