1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-23 23:57:35 +00:00
serenity/Kernel/Net
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
..
Intel Kernel/E1000: Bump RX/TX buffer count to 256/256 2022-02-11 12:45:38 +01:00
NE2000 Everywhere: Convert ByteBuffer factory methods from Optional -> ErrorOr 2022-01-24 22:36:09 +01:00
Realtek Kernel: Propagate overflow errors from Memory::page_round_up 2021-12-28 23:08:50 +01:00
ARP.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
EthernetFrameHeader.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
EtherType.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
ICMP.h Kernel: Switch static_asserts of a type size to AK::AssertSize 2021-09-05 20:08:57 +02:00
IPv4.h Kernel: Remove unused String.h includes 2021-12-11 13:15:26 -08:00
IPv4Socket.cpp Kernel: Lock socket Mutex when servicing IPv4Socket ioctls 2022-02-18 02:22:12 +02:00
IPv4Socket.h Kernel: Use u64 instead of size_t for File::can_write offset 2022-01-25 22:41:17 +02:00
IPv4SocketTuple.h Kernel: Convert IPv4SocketTuple::to_string() to KString 2022-01-12 16:09:09 +02:00
LocalSocket.cpp Kernel: Add LocalSocket::try_for_each() for fallible iteration 2022-02-27 20:37:57 +01:00
LocalSocket.h Kernel: Add LocalSocket::try_for_each() for fallible iteration 2022-02-27 20:37:57 +01:00
LoopbackAdapter.cpp Kernel: Convert network adapter names to Kernel::KString 2021-10-01 17:22:17 +00:00
LoopbackAdapter.h Kernel: Remove the kmalloc_eternal heap :^) 2021-12-28 21:02:38 +01:00
NetworkAdapter.cpp Everywhere: Convert ByteBuffer factory methods from Optional -> ErrorOr 2022-01-24 22:36:09 +01:00
NetworkAdapter.h Kernel+LibC: Add support for the IPv4 TOS field via the IP_TOS sockopt 2021-10-28 11:24:36 +02:00
NetworkingManagement.cpp Kernel/PCI: Don't hold spinlocks when doing fast device enumeration 2022-03-14 22:39:09 +01:00
NetworkingManagement.h Kernel: Add NetworkingManagement::try_for_each() for fallible iteration 2022-02-27 20:37:57 +01:00
NetworkTask.cpp Kernel: Fix bug in TCP state handling in SynSent 2022-02-07 13:18:13 +01:00
NetworkTask.h Kernel: Avoid deadlock when trying to send packets from the NetworkTask 2021-04-30 23:11:56 +02:00
Routing.cpp Kernel: Protect ARP table with spinlock instead of mutex 2022-02-03 16:11:26 +01:00
Routing.h Kernel: Protect ARP table with spinlock instead of mutex 2022-02-03 16:11:26 +01:00
Socket.cpp Kernel: Fix typo in Socket::getsockopt tracing 2022-01-18 08:47:22 +01:00
Socket.h Kernel: Stop using HashMap in Mutex 2022-01-29 16:45:39 +01:00
TCP.h Kernel: Switch static_asserts of a type size to AK::AssertSize 2021-09-05 20:08:57 +02:00
TCPSocket.cpp Kernel: Add TCPSocket::try_for_each() for fallible iteration 2022-02-27 20:37:57 +01:00
TCPSocket.h Kernel: Add TCPSocket::try_for_each() for fallible iteration 2022-02-27 20:37:57 +01:00
UDP.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
UDPSocket.cpp Kernel: Add UDPSocket::try_for_each() for fallible iteration 2022-02-27 20:37:57 +01:00
UDPSocket.h Kernel: Add UDPSocket::try_for_each() for fallible iteration 2022-02-27 20:37:57 +01:00