Browse Source

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

Denis Vlasenko 15 years ago
parent
commit
513720b73b

+ 1 - 1
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 */

+ 2 - 3
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;
 

+ 2 - 5
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;

+ 3 - 5
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

+ 2 - 3
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;
 

+ 1 - 2
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 */