ladybird/Kernel
Andreas Kling d6d7d11590 Kernel: Cache Custody objects (weakly) to avoid expensive reconstruction
This patch adds a (spinlock-protected) custody cache. It's a simple
intrusive list containing all currently live custody objects.

This allows us to re-use existing custodies instead of creating them
again and again.

This gives a pretty decent performance improvement on "find /" :^)
2021-08-15 23:30:52 +02:00
..
ACPI Kernel: Move Mutex into Locking/ 2021-08-07 11:48:00 +02:00
API Kernel+Userland: Remove chroot functionality 2021-08-15 12:44:35 +02:00
Arch Kernel: Disambiguate instruction size for mov in read_gs_ptr 2021-08-11 12:34:47 +02:00
Bus Kernel/SysFS: Don't compute exact size of PCI files 2021-08-15 23:30:52 +02:00
Devices Kernel: Make Kernel::VMObject allocation functions return KResultOr 2021-08-15 15:41:02 +02:00
FileSystem Kernel: Cache Custody objects (weakly) to avoid expensive reconstruction 2021-08-15 23:30:52 +02:00
Graphics Kernel: Make Kernel::VMObject allocation functions return KResultOr 2021-08-15 15:41:02 +02:00
Heap Kernel: Allow kfree_aligned to be called on null pointers 2021-08-13 22:02:23 +02:00
Interrupts Kernel: Make Kernel::VMObject allocation functions return KResultOr 2021-08-15 15:41:02 +02:00
Locking Kernel: Convert lock debug APIs to east const 2021-08-13 20:42:39 +02:00
Memory Kernel: Use NonnullRefPtr<PhysicalPage> in PageDirectory::m_page_tables 2021-08-15 16:53:03 +02:00
Modules Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Net Kernel: Move ARP debug information to ARP_DEBUG 2021-08-15 21:53:29 +02:00
Prekernel Meta: Add Clang support to the CMake build scripts 2021-08-08 10:55:36 +02:00
Storage Kernel: Make FileSystem::initialize() return KResult 2021-08-14 15:19:00 +02:00
Syscalls Kernel: Make Memory::Region allocation functions return KResultOr 2021-08-15 15:41:02 +02:00
Tasks Kernel: Make VirtualFileSystem::sync() static 2021-07-11 00:26:17 +02:00
Time Kernel: Add CLOCK_MONOTONIC_COARSE to the kernel time page 2021-08-10 21:51:05 +02:00
TTY Kernel: Fix logic typo in ConsoleManagement::is_initialized() 2021-08-09 11:46:30 +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+Userland: Remove chroot functionality 2021-08-15 12:44:35 +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/USB: Create controller base class and introduce USBManagement 2021-08-09 21:05:25 +02:00
CommandLine.h Kernel/USB: Create controller base class and introduce USBManagement 2021-08-09 21:05:25 +02:00
ConsoleDevice.cpp Everywhere: Replace AK::Singleton => Singleton 2021-08-08 00:03:45 +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/SMP: Skip thread registers in core dump if there is no trap frame 2021-08-10 02:49:37 +02:00
CoreDump.h Kernel: Use Forward.h headers more 2021-07-11 14:14:51 +02:00
Debug.h.in Kernel: Implement a ISO 9660 filesystem reader :^) 2021-08-07 15:21:58 +02:00
DoubleBuffer.cpp Kernel: Add convenience values to the Memory::Region::Access enum 2021-08-06 22:25:00 +02:00
DoubleBuffer.h Kernel: Move Mutex into Locking/ 2021-08-07 11:48:00 +02:00
embedmap.sh Kernel: Make new kernel build process work on macOS 2021-07-15 11:04:30 +02:00
Forward.h Kernel: Move {Process,Thread,Session,ProcessGroup}ID to Kernel/Forward.h 2021-08-14 19:58:11 +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: Move SpinLock.h into Locking/ 2021-08-07 11:48:00 +02:00
GlobalProcessExposed.cpp Kernel: Move ProcFS related overrides in Process to ProcessProcFSTraits 2021-08-15 02:27:13 +02:00
init.cpp Kernel: Lock thread list while in Thread::unref() 2021-08-15 12:44:35 +02:00
IO.h Kernel: Specify I/O size for BMIDEChannel 2021-06-28 15:55:00 +02:00
KBuffer.h Kernel: Add convenience values to the Memory::Region::Access enum 2021-08-06 22:25:00 +02:00
KBufferBuilder.cpp Kernel: Add convenience values to the Memory::Region::Access enum 2021-08-06 22:25:00 +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: Introduce a StringView overload of dbgputstr(..) 2021-08-13 11:08:11 +02:00
KResult.h Kernel: Stop allowing implicit conversion from KResult to int 2021-08-14 15:19:00 +02:00
kstdio.h Kernel: Introduce a StringView overload of dbgputstr(..) 2021-08-13 11:08:11 +02:00
KString.cpp Kernel: Allow passing null pointer to delete 2021-07-14 13:12:25 +02:00
KString.h Kernel: Annotate KString methods as [[nodiscard]] 2021-08-13 11:08:11 +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
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
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: Make sys$perf_register_string() generate the string ID's 2021-08-12 00:03:39 +02:00
PerformanceEventBuffer.h Kernel: Make sys$perf_register_string() generate the string ID's 2021-08-12 00:03:39 +02:00
PerformanceManager.h Kernel: Add syscall performance event type 2021-08-10 21:55:48 +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+Userland: Remove chroot functionality 2021-08-15 12:44:35 +02:00
Process.h Kernel: Simplify OOM handling in ProcessProcFSTraits 2021-08-15 15:41:02 +02:00
ProcessExposed.cpp Kernel: Handle allocation failure in ProcFS and friends 2021-08-15 02:27:13 +02:00
ProcessExposed.h Kernel+Userland: Remove chroot functionality 2021-08-15 12:44:35 +02:00
ProcessGroup.cpp Everywhere: Replace AK::Singleton => Singleton 2021-08-08 00:03:45 +02:00
ProcessGroup.h Kernel: Port process groups to SpinLockProtectedValue 2021-08-07 13:30:59 +02:00
ProcessProcFSTraits.cpp Kernel+Userland: Remove chroot functionality 2021-08-15 12:44:35 +02:00
ProcessSpecificExposed.cpp Kernel/ProcFS: Avoid two unnecessary number-to-string conversions 2021-08-15 23:30:52 +02:00
Random.cpp Everywhere: Replace AK::Singleton => Singleton 2021-08-08 00:03:45 +02:00
Random.h Kernel: Move Lockable into its own header 2021-08-07 11:48:00 +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: Lock thread list while in Thread::unref() 2021-08-15 12:44:35 +02:00
Scheduler.h Kernel: Rename queue_runnable_thread() => enqueue_runnable_thread() 2021-08-08 14:24:55 +02:00
Sections.h Kernel: Support loading the kernel at almost arbitrary virtual addresses 2021-07-27 13:15:16 +02:00
StdLib.cpp Kernel: Remove copy_string_from_user() as it's no longer used 2021-08-15 12:44:35 +02:00
StdLib.h Kernel: Remove copy_string_from_user() as it's no longer used 2021-08-15 12:44:35 +02:00
Syscall.cpp Kernel: Stop allowing implicit conversion from KResult to int 2021-08-14 15:19:00 +02:00
Thread.cpp Kernel: Lock thread list while in Thread::unref() 2021-08-15 12:44:35 +02:00
Thread.h Kernel: Lock thread list while in Thread::unref() 2021-08-15 12:44:35 +02:00
ThreadBlockers.cpp Kernel: Make AsyncDeviceRequest::name() return StringView 2021-08-06 00:37:47 +02:00
ThreadTracer.cpp Kernel: Remove unused header includes in root kernel tree 2021-07-11 21:37:38 +02:00
ThreadTracer.h Kernel: Move {Process,Thread,Session,ProcessGroup}ID to Kernel/Forward.h 2021-08-14 19:58:11 +02:00
TimerQueue.cpp Everywhere: Replace AK::Singleton => Singleton 2021-08-08 00:03:45 +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: Move {Process,Thread,Session,ProcessGroup}ID to Kernel/Forward.h 2021-08-14 19:58:11 +02:00
UserOrKernelBuffer.cpp Kernel: Move Kernel/Memory/ code into Kernel::Memory namespace 2021-08-06 14:05:58 +02:00
UserOrKernelBuffer.h Kernel: Move Kernel/Memory/ code into Kernel::Memory namespace 2021-08-06 14:05:58 +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 Kernel: Move SpinLock.h into Locking/ 2021-08-07 11:48:00 +02:00
WorkQueue.cpp Kernel: Move SpinLock.h into Locking/ 2021-08-07 11:48:00 +02:00
WorkQueue.h Kernel: Use plain Function objects for the WorkQueue 2021-05-19 21:36:57 +02:00