serenity/Kernel
Idan Horowitz e28af4a2fc Kernel: Stop using HashMap in Mutex
This commit removes the usage of HashMap in Mutex, thereby making Mutex
be allocation-free.

In order to achieve this several simplifications were made to Mutex,
removing unused code-paths and extra VERIFYs:
 * We no longer support 'upgrading' a shared lock holder to an
   exclusive holder when it is the only shared holder and it did not
   unlock the lock before relocking it as exclusive. NOTE: Unlike the
   rest of these changes, this scenario is not VERIFY-able in an
   allocation-free way, as a result the new LOCK_SHARED_UPGRADE_DEBUG
   debug flag was added, this flag lets Mutex allocate in order to
   detect such cases when debugging a deadlock.
 * We no longer support checking if a Mutex is locked by the current
   thread when the Mutex was not locked exclusively, the shared version
   of this check was not used anywhere.
 * We no longer support force unlocking/relocking a Mutex if the Mutex
   was not locked exclusively, the shared version of these functions
   was not used anywhere.
2022-01-29 16:45:39 +01:00
..
API Kernel: Add ioctl to get the EDID from a framebuffer 2022-01-23 22:45:21 +00:00
Arch Kernel: Move kernel region checks from x86 page fault handler to MM 2022-01-28 23:41:18 +01:00
Bus Kernel: Make UHCIController::spawn_port_process OOM-fallible 2022-01-28 19:05:52 +02:00
Devices Kernel: Add block_size_log helper to BlockDevice 2022-01-29 17:41:06 +02:00
FileSystem Kernel: Make Inode::register_watcher() OOM-fallible 2022-01-26 02:37:03 +02:00
Firmware Kernel: Replace {String => KString}::formatted in ACPISysFSDirectory 2022-01-21 16:27:21 +01:00
Graphics Kernel: Convert MemoryManager::allocate_user_physical_page to ErrorOr 2022-01-28 19:05:52 +02:00
Heap Kernel: Include slabheaps in kmalloc statistics 2022-01-24 14:09:55 +02:00
Interrupts Kernel: Make map_typed() & map_typed_writable() fallible using ErrorOr 2022-01-13 22:40:25 +01:00
Library AK+Kernel: Remove one_ref_left() footgun 2022-01-11 01:12:16 +01:00
Locking Kernel: Stop using HashMap in Mutex 2022-01-29 16:45:39 +01:00
Memory Kernel: Move kernel region checks from x86 page fault handler to MM 2022-01-28 23:41:18 +01:00
Net Kernel: Stop using HashMap in Mutex 2022-01-29 16:45:39 +01:00
Prekernel Prekernel: Handle synchronous EL1 exceptions in C++ on aarch64 2022-01-24 06:57:59 +00:00
Storage Kernel: Optimize StorageDevice read and write function 2022-01-29 17:41:06 +02:00
Syscalls Kernel: Stop using HashMap in Mutex 2022-01-29 16:45:39 +01:00
Tasks Kernel: Ignore allocation failures during thread finalization 2022-01-26 22:05:34 +00:00
Time Kernel: Create the time page region before initializing the timers 2022-01-18 21:00:46 +02:00
TTY Kernel: Use u64 instead of size_t for File::can_write offset 2022-01-25 22:41:17 +02:00
AddressSanitizer.cpp
AddressSanitizer.h
Assertions.h
AtomicEdgeAction.h
BootInfo.h
CMakeLists.txt Kernel: Add ioctl to get the EDID from a framebuffer 2022-01-23 22:45:21 +00:00
CMOS.cpp
CMOS.h
CommandLine.cpp Kernel: Add CommandLine option to disable or enable the PC speaker 2022-01-23 00:40:54 +00:00
CommandLine.h Kernel: Add CommandLine option to disable or enable the PC speaker 2022-01-23 00:40:54 +00:00
Coredump.cpp Kernel: Convert CoreDump to KString using try_serialize_absolute_path 2022-01-12 16:09:09 +02:00
Coredump.h
Debug.h.in Kernel: Stop using HashMap in Mutex 2022-01-29 16:45:39 +01:00
DoubleBuffer.cpp
DoubleBuffer.h
embedmap.sh
Forward.h
FutexQueue.cpp
FutexQueue.h
GlobalProcessExposed.cpp Kernel: Switch process file descriptor table from spinlock to mutex 2022-01-29 02:17:09 +01:00
init.cpp Kernel: Perform DeviceManagement initialization after MM is initialized 2022-01-25 22:41:26 +02:00
KBuffer.h
KBufferBuilder.cpp Kernel+AK: Eliminate a couple of temporary String allocations 2021-12-30 14:16:03 +01:00
KBufferBuilder.h Kernel: Make Thread::backtrace() fallible using KString 2022-01-12 16:09:09 +02:00
KLexicalPath.cpp
KLexicalPath.h
kprintf.cpp Kernel: Simplify some if statements 2021-12-30 14:32:17 +01:00
kstdio.h
KString.cpp
KString.h Kernel: Add a KString::bytes() helper 2022-01-13 00:20:08 -08:00
KSyms.cpp
KSyms.h
linker.ld Kernel+Toolchain: Use .init_array section for global constructors 2022-01-24 10:41:47 +00:00
MiniStdLib.cpp
mkmap.sh Kernel: Use the toolchain's nm in mkmap.sh 2021-12-30 18:10:51 +01:00
Multiboot.h Kernel: Only use multiboot framebuffer details if present 2022-01-06 22:34:11 +01:00
Panic.cpp Kernel: Ensure that CommandLine is initialized before choosing PanicMode 2022-01-21 19:34:10 +02:00
Panic.h
PerformanceEventBuffer.cpp Kernel: Make PerformanceEventBuffer::add_process fallible with ErrorOr 2022-01-12 16:09:09 +02:00
PerformanceEventBuffer.h Kernel: Make PerformanceEventBuffer::add_process fallible with ErrorOr 2022-01-12 16:09:09 +02:00
PerformanceManager.h Kernel: Make PerformanceEventBuffer::add_process fallible with ErrorOr 2022-01-12 16:09:09 +02:00
PhysicalAddress.h
Process.cpp Kernel: Stop using HashMap in Mutex 2022-01-29 16:45:39 +01:00
Process.h Kernel: Stop using HashMap in Mutex 2022-01-29 16:45:39 +01:00
ProcessExposed.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
ProcessExposed.h
ProcessGroup.cpp
ProcessGroup.h
ProcessProcFSTraits.cpp
ProcessSpecificExposed.cpp Kernel: Switch process file descriptor table from spinlock to mutex 2022-01-29 02:17:09 +01:00
Random.cpp
Random.h Everywhere: Convert ByteBuffer factory methods from Optional -> ErrorOr 2022-01-24 22:36:09 +01:00
RTC.cpp Everywhere: Fix many spelling errors 2022-01-07 10:56:59 +01:00
RTC.h
SanCov.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
Scheduler.cpp Kernel: Use kernelputstr instead of dbgln when printing backtraces 2022-01-16 01:01:08 +02:00
Scheduler.h
Sections.h
StdLib.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
StdLib.h
Syscall.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
Thread.cpp Kernel: Stop using HashMap in Mutex 2022-01-29 16:45:39 +01:00
Thread.h Kernel: Remove always-false Thread::drop_thread_count boolean parameter 2022-01-26 22:05:34 +00:00
ThreadBlockers.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
ThreadTracer.cpp
ThreadTracer.h Kernel: Add missing includes in ThreadTracer and WorkQueue 2021-12-30 14:32:17 +01:00
TimerQueue.cpp
TimerQueue.h
UBSanitizer.cpp Kernel: Print KUBSAN backtrace to screen if KUBSAN is deadly 2021-12-29 17:58:44 +01:00
UnixTypes.h
UserOrKernelBuffer.cpp
UserOrKernelBuffer.h
VirtualAddress.h
WaitQueue.cpp
WaitQueue.h
WorkQueue.cpp
WorkQueue.h Kernel: Add missing includes in ThreadTracer and WorkQueue 2021-12-30 14:32:17 +01:00