This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH 6/6] Cleanup sigpause implementation
- From: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- To: libc-alpha at sourceware dot org
- Date: Fri, 3 Nov 2017 19:40:49 -0200
- Subject: [PATCH 6/6] Cleanup sigpause implementation
- Authentication-results: sourceware.org; auth=none
- References: <1509745249-11404-1-git-send-email-adhemerval.zanella@linaro.org>
This patch simplify sigpause by remobing the single thread optimization
since it will be handled already by the __sigsuspend call.
Checked on x86_64-linux-gnu.
* sysdeps/posix/sigpause.c (do_sigpause): Remove.
(__sigpause): Rely on __sigsuspend to implement single thread
optimization.
Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
---
ChangeLog | 4 ++++
sysdeps/posix/sigpause.c | 25 +++++--------------------
2 files changed, 9 insertions(+), 20 deletions(-)
diff --git a/sysdeps/posix/sigpause.c b/sysdeps/posix/sigpause.c
index 9038ed3..706195c 100644
--- a/sysdeps/posix/sigpause.c
+++ b/sysdeps/posix/sigpause.c
@@ -19,15 +19,13 @@
#include <errno.h>
#include <signal.h>
#include <stddef.h> /* For NULL. */
-#include <sysdep-cancel.h>
#undef sigpause
#include <sigset-cvt-mask.h>
+#include <sysdep-cancel.h>
-/* Set the mask of blocked signals to MASK,
- wait for a signal to arrive, and then restore the mask. */
-static int
-do_sigpause (int sig_or_mask, int is_sig)
+int
+__sigpause (int sig_or_mask, int is_sig)
{
sigset_t set;
@@ -46,21 +44,6 @@ do_sigpause (int sig_or_mask, int is_sig)
to do anything here. */
return __sigsuspend (&set);
}
-
-int
-__sigpause (int sig_or_mask, int is_sig)
-{
- if (SINGLE_THREAD_P)
- return do_sigpause (sig_or_mask, is_sig);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- int result = do_sigpause (sig_or_mask, is_sig);
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
-}
libc_hidden_def (__sigpause)
/* We have to provide a default version of this function since the
@@ -87,3 +70,5 @@ __xpg_sigpause (int sig)
return __sigpause (sig, 1);
}
strong_alias (__xpg_sigpause, __libc___xpg_sigpause)
+
+LIBC_CANCEL_HANDLED ();
--
2.7.4