OSDN Git Service

remove checks for "impossible" errors,
authorDenis Vlasenko <vda.linux@googlemail.com>
Mon, 1 Dec 2008 18:41:55 +0000 (18:41 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Mon, 1 Dec 2008 18:41:55 +0000 (18:41 -0000)
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

libc/pwd_grp/lckpwdf.c
libc/signal/sighold.c
libc/signal/sigintr.c
libc/signal/sigpause.c
libc/signal/sigrelse.c
libc/sysdeps/linux/common/ssp.c

index 41987ca..ff98dcb 100644 (file)
@@ -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 */
index f8003d6..fde0a0c 100644 (file)
@@ -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;
 
index 351c82b..23f87e1 100644 (file)
@@ -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;
index 96dd933..152f9ca 100644 (file)
@@ -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
index f5ee6fe..1a7141a 100644 (file)
@@ -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;
 
index fadf607..564e14d 100644 (file)
@@ -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 */