From: Adhemerval Zanella Date: Fri, 3 Nov 2017 12:55:09 +0000 (-0200) Subject: Cleanup sigpause implementation X-Git-Tag: glibc-2.27~493 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ad4f43a2344864ae2304060dcc722a7a63bad1b4;p=thirdparty%2Fglibc.git Cleanup sigpause implementation 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. Add LIBC_CANCEL_HANDLED for cancellation marking. Signed-off-by: Adhemerval Zanella Reviewed-by: Zack Weinberg --- diff --git a/ChangeLog b/ChangeLog index b63fa4f77fc..6f10dd94fbf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2017-11-15 Adhemerval Zanella + + * sysdeps/posix/sigpause.c (do_sigpause): Remove. + (__sigpause): Rely on __sigsuspend to implement single thread + optimization. Add LIBC_CANCEL_HANDLED for cancellation marking. + 2017-11-15 Joseph Myers * scripts/build-many-glibcs.py (Context.checkout): Default Linux diff --git a/sysdeps/posix/sigpause.c b/sysdeps/posix/sigpause.c index 9038ed368d0..a61e056d24d 100644 --- a/sysdeps/posix/sigpause.c +++ b/sysdeps/posix/sigpause.c @@ -19,15 +19,13 @@ #include #include #include /* For NULL. */ -#include #undef sigpause #include +#include -/* 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,6 @@ __xpg_sigpause (int sig) return __sigpause (sig, 1); } strong_alias (__xpg_sigpause, __libc___xpg_sigpause) + +/* __sigsuspend handles cancellation. */ +LIBC_CANCEL_HANDLED ();