Optimize sigrelse implementation

This patch simplifies sighold a bit by removing an extra sigprocmask
and using SIG_BLOCK (which union of the current set and the set argument).

Checked on x86_64-linux-gnu.

	* signal/sighold.c (sighold): Optimize implementation.

Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
This commit is contained in:
Adhemerval Zanella 2017-11-06 09:31:37 -02:00
parent ad4f43a234
commit 1ba1d8a44d
2 changed files with 5 additions and 9 deletions

View file

@ -1,5 +1,7 @@
2017-11-15 Adhemerval Zanella <adhemerval.zanella@linaro.org>
* signal/sigrelse.c (sigrelse): Optimize implementation.
* sysdeps/posix/sigpause.c (do_sigpause): Remove.
(__sigpause): Rely on __sigsuspend to implement single thread
optimization. Add LIBC_CANCEL_HANDLED for cancellation marking.

View file

@ -26,14 +26,8 @@ sigrelse (int sig)
{
sigset_t set;
/* Retrieve current signal set. */
if (__sigprocmask (SIG_SETMASK, NULL, &set) < 0)
sigemptyset (&set);
if (sigaddset (&set, sig) < 0)
return -1;
/* Remove the specified signal. */
if (sigdelset (&set, sig) < 0)
return -1;
/* Set the new mask. */
return __sigprocmask (SIG_SETMASK, &set, NULL);
return __sigprocmask (SIG_UNBLOCK, &set, NULL);
}