serenity/Kernel
Liav A 7b6cea9ef4 Kernel: Improve context state keeping in the VirtIOGPU3DDevice class
This is done mainly by implementing safe locking on the data structure
keeping the pointers to the PerContextState objects. Therefore, this now
eliminates the need for using LockRefPtr, as SpinlockProtected is enough
for the whole list.

The usage of HashMap in this class was questionable, and according to
Sahan Fernando (the original contributor to the VirGL work also known as
ccapitalK) there was no deep research on which data structure to use for
keeping all pointers to PerContextState objects.
Therefore, this structure is changed to IntrusiveList as the main reason
and advantage to use it is that handling OOM conditions is much more
simple, because if we succeeded to create a PerContextState object, we
can be sure now that inserting it to the list will not cause OOM error
condition.
2023-04-24 13:09:22 +02:00
..
API Kernel: Allow configuring a Jail to not impose PID isolation restriction 2023-04-24 12:15:29 +02:00
Arch Kernel: Don't get rbp from internal context switch structures 2023-04-17 20:30:17 +02:00
Bus Kernel: Get rid of *LockRefPtr in the SysFS filesystem code 2023-04-14 19:24:54 +02:00
Devices Kernel/HID: Don't use *LockRefPtrs in the I8042Controller code 2023-04-15 12:53:31 +02:00
FileSystem Kernel: Protect internal structures in InodeWatcher with spinlocks 2023-04-22 07:16:41 +02:00
Firmware Kernel/PCI: Hold a reference to DeviceIdentifier in the Device class 2023-01-26 23:04:26 +01:00
Graphics Kernel: Improve context state keeping in the VirtIOGPU3DDevice class 2023-04-24 13:09:22 +02:00
Heap Kernel+LibC: Move name length constants to Kernel/API from limits.h 2023-01-21 10:43:59 -07:00
Interrupts Everywhere: Use ReadonlySpan<T> instead of Span<T const> 2023-02-08 19:15:45 +00:00
Library Kernel: Switch LockRefPtr<Inode> to RefPtr<Inode> 2023-03-09 21:54:59 +01:00
Locking Kernel: Don't ref/unref the holder thread in Mutex 2023-04-04 10:33:42 +02:00
Memory Kernel/Memory: Explain better why we don't use the first 1 MiB on x86_64 2023-04-09 19:40:45 -06:00
Net Kernel/Net: Iron out the locking mechanism across the subsystem 2023-04-14 19:27:56 +02:00
Prekernel Kernel: Unify x86-64 assembly snippets naming for RDSEED & RDRAND 2023-01-25 23:17:36 +01:00
Storage Kernel: Add a FIXME about SD card synchronicity 2023-04-19 10:53:33 +01:00
Syscalls Kernel: Allow configuring a Jail to not impose PID isolation restriction 2023-04-24 12:15:29 +02:00
Tasks Kernel: Simplify Process factory functions 2023-04-04 10:33:42 +02:00
Time Kernel: Implement TimeManagement::boot_time() for aarch64 2023-04-06 21:19:58 +03:00
TTY Kernel: Remove redundant HID name from all associated files 2023-04-09 18:11:37 +02:00
AddressSanitizer.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
AddressSanitizer.h Everywhere: Use bgianf@serenityos.org for my copyright attribution 2021-04-22 21:15:54 +02:00
Assertions.h Kernel: Replace VERIFY_NOT_REACHED with TODO_AARCH64 2022-10-16 17:35:37 +02:00
AtomicEdgeAction.h Kernel: Add per platform Processor.h headers 2021-10-14 01:23:08 +01:00
BootInfo.h Kernel: Move Memory/PageDirectory.{cpp,h} to arch-specific directory 2023-01-27 11:41:43 +01:00
CMakeLists.txt Kernel: Remove redundant HID name from all associated files 2023-04-09 18:11:37 +02:00
CommandLine.cpp Everywhere: Stop using NonnullOwnPtrVector 2023-03-06 23:46:35 +01:00
CommandLine.h Everywhere: Remove NonnullOwnPtr.h includes 2023-03-06 23:46:35 +01:00
Coredump.cpp Kernel: Stop using *LockRefPtr for Process pointers 2023-04-04 10:33:42 +02:00
Coredump.h Kernel: Mark a bunch of NonnullRefPtrs also const to ensure immutability 2023-04-08 13:44:21 +02:00
CrashHandler.cpp Kernel: Add optional userspace backtrace to Process::crash 2023-02-08 18:19:48 +00:00
Credentials.cpp Everywhere: Use ReadonlySpan<T> instead of Span<T const> 2023-02-08 19:15:45 +00:00
Credentials.h Everywhere: Use ReadonlySpan<T> instead of Span<T const> 2023-02-08 19:15:45 +00:00
Debug.h.in Kernel: Add support for Intel HDA 2023-03-25 21:27:03 +01:00
DoubleBuffer.cpp Kernel: Move InterruptDisabler out of Arch directory 2022-10-17 20:11:31 +02:00
DoubleBuffer.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
embedmap.sh Kernel: Make new kernel build process work on macOS 2021-07-15 11:04:30 +02:00
ExecutionMode.h Kernel: Factor our PreviousMode into RegisterState::previous_mode 2023-01-27 11:41:43 +01:00
Forward.h Kernel/FileSystem: Simplify the ProcFS significantly 2023-02-24 22:14:18 +01:00
FutexQueue.cpp Kernel: Propagate OOM conditions out of sys$futex 2022-07-21 16:39:22 +02:00
FutexQueue.h AK+Kernel: Add AK::AtomicRefCounted and use everywhere in the kernel 2022-08-20 17:15:52 +02:00
generate-version-file.sh Kernel: Bake version information into the Kernel 2022-10-14 13:45:33 +02:00
InterruptDisabler.h Kernel: Move InterruptDisabler out of Arch directory 2022-10-17 20:11:31 +02:00
IOWindow.cpp Kernel/PCI: Hold a reference to DeviceIdentifier in the Device class 2023-01-26 23:04:26 +01:00
IOWindow.h Kernel: Remove declarations for non-existent methods 2023-01-27 20:33:18 +00:00
Jail.cpp Kernel: Allow configuring a Jail to not impose PID isolation restriction 2023-04-24 12:15:29 +02:00
Jail.h Kernel: Allow configuring a Jail to not impose PID isolation restriction 2023-04-24 12:15:29 +02:00
KBuffer.h Everywhere: Remove string.h include from AK/Traits.h and resolve fallout 2023-01-21 10:43:59 -07:00
KBufferBuilder.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
KBufferBuilder.h Kernel: Remove includes to LibC stdarg definitions 2023-03-01 19:36:53 -07:00
KLexicalPath.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
KLexicalPath.h Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
kprintf.cpp Kernel: Remove includes to LibC stdarg definitions 2023-03-01 19:36:53 -07:00
kstdio.h Kernel: Remove includes to LibC stdarg definitions 2023-03-01 19:36:53 -07:00
KString.cpp Kernel: Add an error propagating KString::format(..) API :^) 2021-11-30 11:16:35 +01:00
KString.h AK: Add support for "debug only" formatters 2023-01-13 21:09:26 +00:00
KSyms.cpp Kernel: Add optional userspace backtrace to Process::crash 2023-02-08 18:19:48 +00:00
KSyms.h Kernel: Add ability to dump backtrace from provided frame pointer 2022-10-01 14:09:01 +02:00
MiniStdLib.cpp Kernel: Remove i686 support 2022-12-28 11:53:41 +01:00
mkmap.sh Kernel: Use the toolchain's nm in mkmap.sh 2021-12-30 18:10:51 +01:00
Multiboot.h Kernel: Add basic aarch64 support to MemoryManager 2022-09-12 00:56:44 +01:00
Panic.cpp Kernel: Reorganize Arch/x86 directory to Arch/x86_64 after i686 removal 2022-12-28 11:53:41 +01:00
Panic.h Kernel: Implement __panic() for the aarch64 Kernel 2022-05-03 21:53:36 +02:00
PerformanceEventBuffer.cpp AK+Kernel: Add includes before removing Kernel/ProcessExposed.h 2023-02-24 22:14:18 +01:00
PerformanceEventBuffer.h Everywhere: Remove needless copies of Error / ErrorOr instances 2023-02-10 09:08:52 +00:00
PerformanceManager.h AK+Kernel: Add includes before removing Kernel/ProcessExposed.h 2023-02-24 22:14:18 +01:00
PhysicalAddress.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
Process.cpp Kernel: Ensure jailed processes can be reaped by a jailed parent process 2023-04-09 18:49:01 +02:00
Process.h Kernel: Add the futimens syscall 2023-04-10 10:21:28 +02:00
ProcessGroup.cpp Kernel: Make ProcessGroup a ListedRefCounted and fix two races 2023-04-05 11:37:27 +02:00
ProcessGroup.h Kernel: Make ProcessGroup a ListedRefCounted and fix two races 2023-04-05 11:37:27 +02:00
ProcessList.cpp Kernel: Make the Jails' internal design a lot more sane 2023-03-12 10:21:59 -06:00
Random.cpp Kernel/aarch64: Add TimeManagement fallback entropy source to Random.cpp 2023-02-08 18:19:48 +00:00
Random.h Kernel: Turn lock ranks into template parameters 2023-01-02 18:15:27 -05:00
SanCov.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
Scheduler.cpp Kernel: Mark the idle thread as active before switching it in 2023-04-17 20:30:17 +02:00
Scheduler.h Kernel: Turn lock ranks into template parameters 2023-01-02 18:15:27 -05:00
ScopedCritical.cpp Kernel: Move ScopedCritical.cpp to Kernel base directory 2022-12-29 19:32:20 -07:00
ScopedCritical.h Kernel: Move ScopedCritical.cpp to Kernel base directory 2022-12-29 19:32:20 -07:00
Sections.h Kernel/aarch64: Change base address of the kernel to 0x2000000000 2023-01-24 14:54:44 +00:00
StdLib.cpp Everywhere: Run clang-format 2022-12-03 23:52:23 +00:00
StdLib.h Kernel/StdLib: Change try_copy_n_to_user to copy_n_to_user 2023-03-24 18:25:12 +01:00
Syscall.cpp Kernel: Add optional userspace backtrace to Process::crash 2023-02-08 18:19:48 +00:00
Thread.cpp Kernel: Make dispatch_signal work for aarch64 2023-04-06 21:19:58 +03:00
Thread.h Kernel: Stop using *LockRefPtr for Kernel::Timer 2023-04-04 10:33:42 +02:00
ThreadBlockers.cpp Kernel: Stop using *LockRefPtr for ProcessGroup 2023-04-04 10:33:42 +02:00
ThreadTracer.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ThreadTracer.h Kernel+Userland: Remove dependency on i386-specific registers 2022-12-28 11:53:41 +01:00
TimerQueue.cpp Kernel: Stop using *LockRefPtr for Kernel::Timer 2023-04-04 10:33:42 +02:00
TimerQueue.h Kernel: Stop using *LockRefPtr for Kernel::Timer 2023-04-04 10:33:42 +02:00
UBSanitizer.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
UnixTypes.h Kernel: Add support for SA_SIGINFO 2022-03-04 20:07:05 +01:00
UserOrKernelBuffer.cpp Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
UserOrKernelBuffer.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
VirtualAddress.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
WaitQueue.cpp Kernel: Don't register thread as custom data for WaitQueueBlocker 2021-08-24 01:57:11 +02:00
WaitQueue.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
WorkQueue.cpp Kernel/aarch64: Make sure no reordering of DAIF::read is possible 2023-04-13 20:22:08 +02:00
WorkQueue.h Kernel: Stop using *LockRefPtr for Thread 2023-04-04 10:33:42 +02:00