ladybird/Kernel/Storage
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
..
ATA Kernel/Storage: Don't try to enumerate PCI adapters if PCI is disabled 2022-03-02 18:41:54 +01:00
NVMe Kernel: Change static constexpr variables to constexpr where possible 2022-02-09 21:04:51 +00:00
Partition Kernel: Stop using the make<T> factory method in the Kernel 2022-02-03 23:33:20 +01:00
RamdiskController.cpp Kernel: Propagate overflow errors from Memory::page_round_up 2021-12-28 23:08:50 +01:00
RamdiskController.h Kernel: Remove the kmalloc_eternal heap :^) 2021-12-28 21:02:38 +01:00
RamdiskDevice.cpp Kernel: Remove the KString::try_create(String::formatted(...)) pattern 2021-12-28 01:55:22 -08:00
RamdiskDevice.h Kernel: Remove the kmalloc_eternal heap :^) 2021-12-28 21:02:38 +01:00
StorageController.h Kernel: Remove the kmalloc_eternal heap :^) 2021-12-28 21:02:38 +01:00
StorageDevice.cpp Kernel: Optimize StorageDevice read and write function 2022-01-29 17:41:06 +02:00
StorageDevice.h Kernel: Cache blocks_per_page in StorageDevice class 2022-01-29 17:41:06 +02:00
StorageManagement.cpp Kernel/PCI: Don't hold spinlocks when doing fast device enumeration 2022-03-14 22:39:09 +01:00
StorageManagement.h Kernel/Storage: Don't try to enumerate PCI adapters if PCI is disabled 2022-03-02 18:41:54 +01:00