ladybird/Kernel/Devices
Liav A 3fb289e27d Kernel/PCI: Don't hold spinlocks when doing fast device enumeration
Instead, hold the lock while we copy the contents to a stack-based
Vector then iterate on it without any locking.

Because we rely on heap allocations, we need to propagate errors back
in case of OOM condition, therefore, both PCI::enumerate API function
and PCI::Access::add_host_controller_and_enumerate_attached_devices use
now a ErrorOr<void> return value to propagate errors. OOM Error can only
occur when enumerating the m_device_identifiers vector under a spinlock
and trying to expand the temporary Vector which will be used locklessly
to actually iterate over the PCI::DeviceIdentifiers objects.
2022-03-14 22:39:09 +01:00
..
Audio Kernel/PCI: Don't hold spinlocks when doing fast device enumeration 2022-03-14 22:39:09 +01:00
HID Kernel: Wrap HIDManagement keymap data in SpinlockProtected 2022-03-07 16:35:23 +01:00
AsyncDeviceRequest.cpp Kernel: Convert Processor::in_irq() to static current_in_irq() 2021-08-23 00:02:09 +02:00
AsyncDeviceRequest.h Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
BlockDevice.cpp Kernel: Remove the assumption of 512 block size in read/write_block 2022-01-29 17:41:06 +02:00
BlockDevice.h AK: Move integral log2 and exp to IntegerMath.h 2022-02-06 17:52:33 +00:00
CharacterDevice.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
CharacterDevice.h Kernel: Make major and minor numbers to be DistinctNumerics 2021-12-23 23:02:39 +01:00
ConsoleDevice.cpp Kernel: Use u64 instead of size_t for File::can_read offset 2022-01-25 22:41:17 +02:00
ConsoleDevice.h Kernel: Use u64 instead of size_t for File::can_write offset 2022-01-25 22:41:17 +02:00
Device.cpp Kernel: Rename File::{before_removing => will_be_destroyed} 2021-12-29 12:04:15 +01:00
Device.h Kernel: Protect global device map with spinlock instead of mutx 2022-02-03 16:11:26 +01:00
DeviceControlDevice.cpp Kernel: Use u64 instead of size_t for File::can_read offset 2022-01-25 22:41:17 +02:00
DeviceControlDevice.h Kernel: Use u64 instead of size_t for File::can_write offset 2022-01-25 22:41:17 +02:00
DeviceManagement.cpp Kernel: Add DeviceManagement::try_for_each() for fallible iteration 2022-02-27 20:37:57 +01:00
DeviceManagement.h Kernel: Add DeviceManagement::try_for_each() for fallible iteration 2022-02-27 20:37:57 +01:00
FullDevice.cpp Kernel: Use u64 instead of size_t for File::can_read offset 2022-01-25 22:41:17 +02:00
FullDevice.h Kernel: Use u64 instead of size_t for File::can_write offset 2022-01-25 22:41:17 +02:00
KCOVDevice.cpp Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
KCOVDevice.h Kernel: Use u64 instead of size_t for File::can_write offset 2022-01-25 22:41:17 +02:00
KCOVInstance.cpp Kernel: Propagate overflow errors from Memory::page_round_up 2021-12-28 23:08:50 +01:00
KCOVInstance.h Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
MemoryDevice.cpp Kernel: Make map_typed() & map_typed_writable() fallible using ErrorOr 2022-01-13 22:40:25 +01:00
MemoryDevice.h Kernel: Use u64 instead of size_t for File::can_write offset 2022-01-25 22:41:17 +02:00
NullDevice.cpp Kernel: Use u64 instead of size_t for File::can_read offset 2022-01-25 22:41:17 +02:00
NullDevice.h Kernel: Use u64 instead of size_t for File::can_write offset 2022-01-25 22:41:17 +02:00
PCISerialDevice.cpp Kernel/PCI: Don't hold spinlocks when doing fast device enumeration 2022-03-14 22:39:09 +01:00
PCISerialDevice.h Kernel: Remove the kmalloc_eternal heap :^) 2021-12-28 21:02:38 +01:00
PCSpeaker.cpp Kernel: Move x86 IO instructions code into the x86 specific folder 2021-10-01 12:27:20 +02:00
PCSpeaker.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
RandomDevice.cpp Kernel: Use u64 instead of size_t for File::can_read offset 2022-01-25 22:41:17 +02:00
RandomDevice.h Kernel: Use u64 instead of size_t for File::can_write offset 2022-01-25 22:41:17 +02:00
SerialDevice.cpp Kernel: Use u64 instead of size_t for File::can_write offset 2022-01-25 22:41:17 +02:00
SerialDevice.h Kernel: Use u64 instead of size_t for File::can_write offset 2022-01-25 22:41:17 +02:00
VMWareBackdoor.cpp Kernel: Stop using the make<T> factory method in the Kernel 2022-02-03 23:33:20 +01:00
VMWareBackdoor.h Kernel: Remove the kmalloc_eternal heap :^) 2021-12-28 21:02:38 +01:00
ZeroDevice.cpp Kernel: Use u64 instead of size_t for File::can_read offset 2022-01-25 22:41:17 +02:00
ZeroDevice.h Kernel: Use u64 instead of size_t for File::can_write offset 2022-01-25 22:41:17 +02:00