From: Adhemerval Zanella Date: Wed, 1 Nov 2017 13:56:53 +0000 (-0200) Subject: Optimize sighold implementation X-Git-Tag: glibc-2.27~527 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d83da3a4cebcf77e34593b86112dfad332808dae;p=thirdparty%2Fglibc.git Optimize sighold 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 Reviewed-by: Zack Weinberg --- diff --git a/ChangeLog b/ChangeLog index 9861b97e8ff..8355074f7ff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2017-11-06 Adhemerval Zanella + * signal/sighold.c (sighold): Optimize implementation. + * sysdeps/unix/sysv/linux/sigqueue.c (__sigqueue): Asssume __NR_rt_sigqueueinfo. diff --git a/signal/sighold.c b/signal/sighold.c index 2e32e4718a5..955ac5b0fbc 100644 --- a/signal/sighold.c +++ b/signal/sighold.c @@ -26,14 +26,8 @@ sighold (int sig) { sigset_t set; - /* Retrieve current signal set. */ - if (__sigprocmask (SIG_SETMASK, NULL, &set) < 0) - return -1; - - /* Add the specified signal. */ + sigemptyset (&set); if (sigaddset (&set, sig) < 0) return -1; - - /* Set the new mask. */ - return __sigprocmask (SIG_SETMASK, &set, NULL); + return __sigprocmask (SIG_BLOCK, &set, NULL); }