summaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2008-12-01 18:41:55 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2008-12-01 18:41:55 +0000
commit513720b73b403c3c9aca3f25c085422f4132c292 (patch)
treed79fe1353bbc081042673bafd494f8a90d94b227 /libc
parent83eb4d5219f920fde59c9edd9204664f0c2f9f36 (diff)
remove checks for "impossible" errors,
clarify uses of unoptimized sigXXX ops (they check signo), use faster sigops where approproate. text data bss dec hex filename - 68 0 0 68 44 libc/signal/sighold.o + 63 0 0 63 3f libc/signal/sighold.o - 114 0 0 114 72 libc/signal/sigintr.o + 110 0 0 110 6e libc/signal/sigintr.o - 113 0 0 113 71 libc/signal/sigpause.o + 108 0 0 108 6c libc/signal/sigpause.o - 68 0 0 68 44 libc/signal/sigrelse.o + 63 0 0 63 3f libc/signal/sigrelse.o
Diffstat (limited to 'libc')
-rw-r--r--libc/pwd_grp/lckpwdf.c2
-rw-r--r--libc/signal/sighold.c5
-rw-r--r--libc/signal/sigintr.c7
-rw-r--r--libc/signal/sigpause.c8
-rw-r--r--libc/signal/sigrelse.c5
-rw-r--r--libc/sysdeps/linux/common/ssp.c3
6 files changed, 11 insertions, 19 deletions
diff --git a/libc/pwd_grp/lckpwdf.c b/libc/pwd_grp/lckpwdf.c
index 41987ca5d..ff98dcb76 100644
--- a/libc/pwd_grp/lckpwdf.c
+++ b/libc/pwd_grp/lckpwdf.c
@@ -123,7 +123,7 @@ lckpwdf (void)
/* Now make sure the alarm signal is not blocked. */
__sigemptyset (&new_set);
- sigaddset (&new_set, SIGALRM);
+ __sigaddset (&new_set, SIGALRM);
#if 1
sigprocmask (SIG_UNBLOCK, &new_set, &saved_set);
#else /* never fails */
diff --git a/libc/signal/sighold.c b/libc/signal/sighold.c
index f8003d60f..fde0a0c2a 100644
--- a/libc/signal/sighold.c
+++ b/libc/signal/sighold.c
@@ -30,10 +30,9 @@ int sighold (int sig)
sigset_t set;
/* Retrieve current signal set. */
- if (sigprocmask (SIG_SETMASK, NULL, &set) < 0)
- return -1;
+ sigprocmask (SIG_SETMASK, NULL, &set); /* can't fail */
- /* Add the specified signal. */
+ /* Bound-check sig, add it to the set. */
if (sigaddset (&set, sig) < 0)
return -1;
diff --git a/libc/signal/sigintr.c b/libc/signal/sigintr.c
index 351c82b75..23f87e199 100644
--- a/libc/signal/sigintr.c
+++ b/libc/signal/sigintr.c
@@ -34,7 +34,7 @@ int siginterrupt (int sig, int interrupt)
#ifdef SA_RESTART
struct sigaction action;
- if (sigaction (sig, (struct sigaction *) NULL, &action) < 0)
+ if (sigaction (sig, NULL, &action) < 0)
return -1;
if (interrupt)
@@ -48,10 +48,7 @@ int siginterrupt (int sig, int interrupt)
action.sa_flags |= SA_RESTART;
}
- if (sigaction (sig, &action, (struct sigaction *) NULL) < 0)
- return -1;
-
- return 0;
+ return sigaction (sig, &action, NULL);
#else
__set_errno (ENOSYS);
return -1;
diff --git a/libc/signal/sigpause.c b/libc/signal/sigpause.c
index 96dd93368..152f9ca32 100644
--- a/libc/signal/sigpause.c
+++ b/libc/signal/sigpause.c
@@ -40,12 +40,10 @@ int __sigpause (int sig_or_mask, int is_sig)
if (is_sig)
{
-//TODO: error check for sig_or_mask = BIGNUM?
-
/* The modern X/Open implementation is requested. */
- if (sigprocmask (0, NULL, &set) < 0
- /* Yes, we call `sigdelset' and not `__sigdelset'. */
- || sigdelset (&set, sig_or_mask) < 0)
+ sigprocmask (SIG_BLOCK, NULL, &set);
+ /* Bound-check sig_or_mask, remove it from the set. */
+ if (sigdelset (&set, sig_or_mask) < 0)
return -1;
}
else
diff --git a/libc/signal/sigrelse.c b/libc/signal/sigrelse.c
index f5ee6fedc..1a7141ac5 100644
--- a/libc/signal/sigrelse.c
+++ b/libc/signal/sigrelse.c
@@ -30,10 +30,9 @@ int sigrelse (int sig)
sigset_t set;
/* Retrieve current signal set. */
- if (sigprocmask (SIG_SETMASK, NULL, &set) < 0)
- return -1;
+ sigprocmask (SIG_SETMASK, NULL, &set); /* can't fail */
- /* Remove the specified signal. */
+ /* Bound-check sig, remove it from the set. */
if (sigdelset (&set, sig) < 0)
return -1;
diff --git a/libc/sysdeps/linux/common/ssp.c b/libc/sysdeps/linux/common/ssp.c
index fadf6077b..564e14d71 100644
--- a/libc/sysdeps/linux/common/ssp.c
+++ b/libc/sysdeps/linux/common/ssp.c
@@ -52,8 +52,7 @@ static void block_signals(void)
sigset_t mask;
__sigfillset(&mask);
-
- sigdelset(&mask, SSP_SIGTYPE); /* Block all signal handlers */
+ __sigdelset(&mask, SSP_SIGTYPE); /* Block all signal handlers */
sigprocmask(SIG_BLOCK, &mask, NULL); /* except SSP_SIGTYPE */
/* Make the default handler associated with the signal handler */