From a79454f6a61b677c8f00c40cafd1e3754fd5c6ca Mon Sep 17 00:00:00 2001 From: Max Kellermann <max.kellermann@gmail.com> Date: Thu, 9 Mar 2023 18:00:23 +0100 Subject: [PATCH] io/FileDescriptor: fold CreateSignalFD() into the SignalFD constructor --- src/io/FileDescriptor.cxx | 15 --------------- src/io/FileDescriptor.hxx | 8 -------- src/system/SignalFD.cxx | 9 ++++++++- 3 files changed, 8 insertions(+), 24 deletions(-) diff --git a/src/io/FileDescriptor.cxx b/src/io/FileDescriptor.cxx index 354829c7b..1497e6f64 100644 --- a/src/io/FileDescriptor.cxx +++ b/src/io/FileDescriptor.cxx @@ -236,21 +236,6 @@ FileDescriptor::CheckDuplicate(FileDescriptor new_fd) const noexcept #endif -#ifdef __linux__ - -bool -FileDescriptor::CreateSignalFD(const sigset_t *mask) noexcept -{ - int new_fd = ::signalfd(fd, mask, SFD_NONBLOCK|SFD_CLOEXEC); - if (new_fd < 0) - return false; - - fd = new_fd; - return true; -} - -#endif - bool FileDescriptor::Rewind() const noexcept { diff --git a/src/io/FileDescriptor.hxx b/src/io/FileDescriptor.hxx index 92f7db15e..628a0f3fc 100644 --- a/src/io/FileDescriptor.hxx +++ b/src/io/FileDescriptor.hxx @@ -9,10 +9,6 @@ #include <unistd.h> #include <sys/types.h> -#ifdef __linux__ -#include <csignal> -#endif - #ifdef _WIN32 #include <wchar.h> #endif @@ -180,10 +176,6 @@ public: bool CheckDuplicate(FileDescriptor new_fd) const noexcept; #endif -#ifdef __linux__ - bool CreateSignalFD(const sigset_t *mask) noexcept; -#endif - /** * Close the file descriptor. It should not be called on an * "undefined" object. After this call, IsDefined() is guaranteed diff --git a/src/system/SignalFD.cxx b/src/system/SignalFD.cxx index ed0883b85..ba3c4d058 100644 --- a/src/system/SignalFD.cxx +++ b/src/system/SignalFD.cxx @@ -11,8 +11,15 @@ void SignalFD::Create(const sigset_t &mask) { - if (!fd.CreateSignalFD(&mask)) + int new_fd = ::signalfd(fd.Get(), &mask, SFD_NONBLOCK|SFD_CLOEXEC); + if (new_fd < 0) throw MakeErrno("signalfd() failed"); + + if (!fd.IsDefined()) { + fd = UniqueFileDescriptor{new_fd}; + } + + assert(new_fd == fd.Get()); } int