diff options
author | Andreas Kling <kling@serenityos.org> | 2021-09-15 21:09:47 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-09-15 21:09:47 +0200 |
commit | b6efd66d563a2d378e6b40a313c1b50808f78f0d (patch) | |
tree | 02793f3f8202944148125dbc0562dbc7a27cf430 /Kernel | |
parent | 422d725c79fdb95ff67292e1d6a04a6518d277ff (diff) | |
download | serenity-b6efd66d563a2d378e6b40a313c1b50808f78f0d.zip |
Kernel: Use move semantics in sys$sendfd()
Avoid an unnecessary NonnullRefPtr<OpenFileDescription> copy.
Diffstat (limited to 'Kernel')
-rw-r--r-- | Kernel/Net/LocalSocket.cpp | 2 | ||||
-rw-r--r-- | Kernel/Net/LocalSocket.h | 2 | ||||
-rw-r--r-- | Kernel/Syscalls/sendfd.cpp | 4 |
3 files changed, 4 insertions, 4 deletions
diff --git a/Kernel/Net/LocalSocket.cpp b/Kernel/Net/LocalSocket.cpp index a6c7fb976e..f5dc0cc9f4 100644 --- a/Kernel/Net/LocalSocket.cpp +++ b/Kernel/Net/LocalSocket.cpp @@ -466,7 +466,7 @@ NonnullRefPtrVector<OpenFileDescription>& LocalSocket::sendfd_queue_for(const Op VERIFY_NOT_REACHED(); } -KResult LocalSocket::sendfd(const OpenFileDescription& socket_description, OpenFileDescription& passing_description) +KResult LocalSocket::sendfd(OpenFileDescription const& socket_description, NonnullRefPtr<OpenFileDescription> passing_description) { MutexLocker locker(mutex()); auto role = this->role(socket_description); diff --git a/Kernel/Net/LocalSocket.h b/Kernel/Net/LocalSocket.h index 96e0322f6b..f1327944e0 100644 --- a/Kernel/Net/LocalSocket.h +++ b/Kernel/Net/LocalSocket.h @@ -26,7 +26,7 @@ public: static KResultOr<SocketPair> try_create_connected_pair(int type); virtual ~LocalSocket() override; - KResult sendfd(const OpenFileDescription& socket_description, OpenFileDescription& passing_description); + KResult sendfd(OpenFileDescription const& socket_description, NonnullRefPtr<OpenFileDescription> passing_description); KResultOr<NonnullRefPtr<OpenFileDescription>> recvfd(const OpenFileDescription& socket_description); static void for_each(Function<void(const LocalSocket&)>); diff --git a/Kernel/Syscalls/sendfd.cpp b/Kernel/Syscalls/sendfd.cpp index ea77b41bc9..99b8cab240 100644 --- a/Kernel/Syscalls/sendfd.cpp +++ b/Kernel/Syscalls/sendfd.cpp @@ -23,9 +23,9 @@ KResultOr<FlatPtr> Process::sys$sendfd(int sockfd, int fd) if (!socket.is_connected()) return ENOTCONN; - auto passing_descriptor = TRY(fds().open_file_description(fd)); + auto passing_description = TRY(fds().open_file_description(fd)); auto& local_socket = static_cast<LocalSocket&>(socket); - return local_socket.sendfd(*socket_description, *passing_descriptor); + return local_socket.sendfd(*socket_description, move(passing_description)); } KResultOr<FlatPtr> Process::sys$recvfd(int sockfd, int options) |