diff options
-rw-r--r-- | Kernel/GlobalProcessExposed.cpp | 2 | ||||
-rw-r--r-- | Kernel/Net/Routing.cpp | 14 | ||||
-rw-r--r-- | Kernel/Net/Routing.h | 2 |
3 files changed, 9 insertions, 9 deletions
diff --git a/Kernel/GlobalProcessExposed.cpp b/Kernel/GlobalProcessExposed.cpp index 5072c5691c..eecf730818 100644 --- a/Kernel/GlobalProcessExposed.cpp +++ b/Kernel/GlobalProcessExposed.cpp @@ -75,7 +75,7 @@ private: virtual ErrorOr<void> try_generate(KBufferBuilder& builder) override { JsonArraySerializer array { builder }; - arp_table().for_each_shared([&](const auto& it) { + arp_table().for_each([&](const auto& it) { auto obj = array.add_object(); obj.add("mac_address", it.value.to_string()); obj.add("ip_address", it.key.to_string()); diff --git a/Kernel/Net/Routing.cpp b/Kernel/Net/Routing.cpp index 3e5d066301..46d57744de 100644 --- a/Kernel/Net/Routing.cpp +++ b/Kernel/Net/Routing.cpp @@ -16,7 +16,7 @@ namespace Kernel { -static Singleton<MutexProtected<HashMap<IPv4Address, MACAddress>>> s_arp_table; +static Singleton<SpinlockProtected<HashMap<IPv4Address, MACAddress>>> s_arp_table; class ARPTableBlocker final : public Thread::Blocker { public: @@ -70,7 +70,7 @@ protected: { VERIFY(b.blocker_type() == Thread::Blocker::Type::Routing); auto& blocker = static_cast<ARPTableBlocker&>(b); - auto maybe_mac_address = arp_table().with_shared([&](auto const& table) -> auto { + auto maybe_mac_address = arp_table().with([&](auto const& table) -> auto { return table.get(blocker.ip_address()); }); if (!maybe_mac_address.has_value()) @@ -94,7 +94,7 @@ bool ARPTableBlocker::setup_blocker() void ARPTableBlocker::will_unblock_immediately_without_blocking(UnblockImmediatelyReason) { - auto addr = arp_table().with_shared([&](auto const& table) -> auto { + auto addr = arp_table().with([&](auto const& table) -> auto { return table.get(ip_address()); }); @@ -105,14 +105,14 @@ void ARPTableBlocker::will_unblock_immediately_without_blocking(UnblockImmediate } } -MutexProtected<HashMap<IPv4Address, MACAddress>>& arp_table() +SpinlockProtected<HashMap<IPv4Address, MACAddress>>& arp_table() { return *s_arp_table; } void update_arp_table(IPv4Address const& ip_addr, MACAddress const& addr, UpdateArp update) { - arp_table().with_exclusive([&](auto& table) { + arp_table().with([&](auto& table) { if (update == UpdateArp::Set) table.set(ip_addr, addr); if (update == UpdateArp::Delete) @@ -121,7 +121,7 @@ void update_arp_table(IPv4Address const& ip_addr, MACAddress const& addr, Update s_arp_table_blocker_set->unblock_blockers_waiting_for_ipv4_address(ip_addr, addr); if constexpr (ARP_DEBUG) { - arp_table().with_shared([&](auto const& table) { + arp_table().with([&](auto const& table) { dmesgln("ARP table ({} entries):", table.size()); for (auto& it : table) dmesgln("{} :: {}", it.value.to_string(), it.key.to_string()); @@ -232,7 +232,7 @@ RoutingDecision route_to(IPv4Address const& target, IPv4Address const& source, R return { adapter, multicast_ethernet_address(target) }; { - auto addr = arp_table().with_shared([&](auto const& table) -> auto { + auto addr = arp_table().with([&](auto const& table) -> auto { return table.get(next_hop_ip); }); if (addr.has_value()) { diff --git a/Kernel/Net/Routing.h b/Kernel/Net/Routing.h index df33b60cb8..bbd0dae123 100644 --- a/Kernel/Net/Routing.h +++ b/Kernel/Net/Routing.h @@ -33,6 +33,6 @@ enum class AllowUsingGateway { RoutingDecision route_to(IPv4Address const& target, IPv4Address const& source, RefPtr<NetworkAdapter> const through = nullptr, AllowUsingGateway = AllowUsingGateway::Yes); -MutexProtected<HashMap<IPv4Address, MACAddress>>& arp_table(); +SpinlockProtected<HashMap<IPv4Address, MACAddress>>& arp_table(); } |