From 1ba1d8a44d244110c1f8d768f098ac44351acb76 Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Mon, 6 Nov 2017 09:31:37 -0200 Subject: 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 --- signal/sigrelse.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'signal') diff --git a/signal/sigrelse.c b/signal/sigrelse.c index e41c2bd261..61f240be5e 100644 --- a/signal/sigrelse.c +++ b/signal/sigrelse.c @@ -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); } -- cgit 1.4.1