ladybird/Kernel/Bus/USB
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
..
UHCI Kernel: Make UHCIController::spawn_port_process OOM-fallible 2022-01-28 19:05:52 +02:00
PacketTypes.h
SysFSUSB.cpp Everywhere: Make JSON serialization fallible 2022-02-27 20:37:57 +01:00
SysFSUSB.h Kernel: Use try_create not must_create in SysFSUSB::create 2022-01-03 10:39:56 +02:00
USBClasses.h Kernel/USB: Add header containing all the current USB classes 2021-08-14 21:22:44 +02:00
USBConstants.h Kernel/USB: Add Hubs and the UHCI Root Hub 2021-08-14 21:22:44 +02:00
USBController.cpp Kernel/USB: Create controller base class and introduce USBManagement 2021-08-09 21:05:25 +02:00
USBController.h Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
USBDescriptors.h Kernel/USB: Add Hubs and the UHCI Root Hub 2021-08-14 21:22:44 +02:00
USBDevice.cpp Kernel: Remove unused String.h includes 2021-12-11 13:15:26 -08:00
USBDevice.h Kernel: Some clang-tidy fixes in Bus/USB 2021-12-09 22:53:42 -08:00
USBEndpoint.h Kernel/USB: Use "Pipe" instead of "USBPipe" in USBEndpoint 2021-08-14 21:22:44 +02:00
USBHub.cpp Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
USBHub.h Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
USBManagement.cpp Kernel/PCI: Don't hold spinlocks when doing fast device enumeration 2022-03-14 22:39:09 +01:00
USBManagement.h Kernel: Remove the kmalloc_eternal heap :^) 2021-12-28 21:02:38 +01:00
USBPipe.cpp Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
USBPipe.h Kernel: Some clang-tidy fixes in Bus/USB 2021-12-09 22:53:42 -08:00
USBRequest.h Kernel/USB: Add all USB 2.0 bmRequestType fields 2021-08-14 21:22:44 +02:00
USBTransfer.cpp Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
USBTransfer.h Kernel: Mark USBTransfer's constructor as private 2021-12-09 22:53:42 -08:00