diff --git a/Kernel/Net/LocalSocket.cpp b/Kernel/Net/LocalSocket.cpp index fe06dfe78c..f5be34babc 100644 --- a/Kernel/Net/LocalSocket.cpp +++ b/Kernel/Net/LocalSocket.cpp @@ -17,9 +17,9 @@ namespace Kernel { -static AK::Singleton>> s_list; +static AK::Singleton> s_list; -Lockable>& LocalSocket::all_sockets() +static Lockable& all_sockets() { return *s_list; } @@ -69,8 +69,10 @@ KResultOr LocalSocket::create_connected_pair(int type) LocalSocket::LocalSocket(int type) : Socket(AF_LOCAL, type, 0) { - Locker locker(all_sockets().lock()); - all_sockets().resource().append(this); + { + Locker locker(all_sockets().lock()); + all_sockets().resource().append(*this); + } auto current_process = Process::current(); m_prebind_uid = current_process->euid(); @@ -90,7 +92,7 @@ LocalSocket::LocalSocket(int type) LocalSocket::~LocalSocket() { Locker locker(all_sockets().lock()); - all_sockets().resource().remove(this); + all_sockets().resource().remove(*this); } void LocalSocket::get_local_address(sockaddr* address, socklen_t* address_size) diff --git a/Kernel/Net/LocalSocket.h b/Kernel/Net/LocalSocket.h index 54412c829f..f86707cc23 100644 --- a/Kernel/Net/LocalSocket.h +++ b/Kernel/Net/LocalSocket.h @@ -6,7 +6,7 @@ #pragma once -#include +#include #include #include @@ -19,9 +19,7 @@ struct SocketPair { NonnullRefPtr description2; }; -class LocalSocket final : public Socket - , public InlineLinkedListNode { - friend class InlineLinkedListNode; +class LocalSocket final : public Socket { public: static KResultOr> create(int type); @@ -57,7 +55,6 @@ private: virtual const char* class_name() const override { return "LocalSocket"; } virtual bool is_local() const override { return true; } bool has_attached_peer(const FileDescription&) const; - static Lockable>& all_sockets(); DoubleBuffer* receive_buffer_for(FileDescription&); DoubleBuffer* send_buffer_for(FileDescription&); NonnullRefPtrVector& sendfd_queue_for(const FileDescription&); @@ -102,9 +99,10 @@ private: NonnullRefPtrVector m_fds_for_client; NonnullRefPtrVector m_fds_for_server; - // for InlineLinkedList - LocalSocket* m_prev { nullptr }; - LocalSocket* m_next { nullptr }; + IntrusiveListNode m_list_node; + +public: + using List = IntrusiveList, &LocalSocket::m_list_node>; }; }