mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-08 14:20:07 +00:00
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 <adhemerval.zanella@linaro.org> Reviewed-by: Zack Weinberg <zackw@panix.com>
This commit is contained in:
parent
d0212d429d
commit
ad4f43a234
@ -1,3 +1,9 @@
|
||||
2017-11-15 Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||
|
||||
* 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 <joseph@codesourcery.com>
|
||||
|
||||
* scripts/build-many-glibcs.py (Context.checkout): Default Linux
|
||||
|
@ -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,6 @@ __xpg_sigpause (int sig)
|
||||
return __sigpause (sig, 1);
|
||||
}
|
||||
strong_alias (__xpg_sigpause, __libc___xpg_sigpause)
|
||||
|
||||
/* __sigsuspend handles cancellation. */
|
||||
LIBC_CANCEL_HANDLED ();
|
||||
|
Loading…
Reference in New Issue
Block a user