svn commit: trunk/uClibc: libc/signal libc/stdlib libc/sysdeps/lin etc...
vda at uclibc.org
vda at uclibc.org
Sat Nov 29 16:46:07 UTC 2008
Author: vda
Date: 2008-11-29 08:46:07 -0800 (Sat, 29 Nov 2008)
New Revision: 24184
Log:
shring sugnal-relared stuff a bit. BTW why constant memset is not inlined by gcc?
text data bss dec hex filename
- 38015 18096 8636 64747 fceb lib/libpthread-0.9.30-svn.so
+ 38001 18096 8636 64733 fcdd lib/libpthread-0.9.30-svn.so
- 274842 1835 19012 295689 48309 lib/libuClibc-0.9.30-svn.so
+ 274779 1835 19012 295626 482ca lib/libuClibc-0.9.30-svn.so
Modified:
trunk/uClibc/libc/signal/sigblock.c
trunk/uClibc/libc/signal/sigignore.c
trunk/uClibc/libc/signal/signal.c
trunk/uClibc/libc/signal/sigpause.c
trunk/uClibc/libc/signal/sigset-cvt-mask.h
trunk/uClibc/libc/signal/sigset.c
trunk/uClibc/libc/signal/sigsetmask.c
trunk/uClibc/libc/signal/sigwait.c
trunk/uClibc/libc/signal/sysv_signal.c
trunk/uClibc/libc/stdlib/abort.c
trunk/uClibc/libc/sysdeps/linux/alpha/sigprocmask.c
trunk/uClibc/libc/sysdeps/linux/common/ssp.c
trunk/uClibc/libc/unistd/sleep.c
trunk/uClibc/libpthread/linuxthreads.old/pthread.c
trunk/uClibc/libpthread/linuxthreads/pthread.c
Changeset:
Modified: trunk/uClibc/libc/signal/sigblock.c
===================================================================
--- trunk/uClibc/libc/signal/sigblock.c 2008-11-29 15:35:51 UTC (rev 24183)
+++ trunk/uClibc/libc/signal/sigblock.c 2008-11-29 16:46:07 UTC (rev 24184)
@@ -19,6 +19,7 @@
#define __UCLIBC_HIDE_DEPRECATED__
#include <errno.h>
#include <signal.h>
+#include <string.h>
/* libc_hidden_proto(sigprocmask) */
@@ -30,12 +31,9 @@
{
sigset_t set, oset;
- if (sigset_set_old_mask (&set, mask) < 0)
- return -1;
-
+ sigset_set_old_mask (&set, mask);
if (sigprocmask (SIG_BLOCK, &set, &oset) < 0)
return -1;
-
return sigset_get_old_mask (&oset);
}
libc_hidden_def(sigblock)
Modified: trunk/uClibc/libc/signal/sigignore.c
===================================================================
--- trunk/uClibc/libc/signal/sigignore.c 2008-11-29 15:35:51 UTC (rev 24183)
+++ trunk/uClibc/libc/signal/sigignore.c 2008-11-29 16:46:07 UTC (rev 24184)
@@ -30,10 +30,10 @@
{
struct sigaction act;
+ memset(&act, 0, sizeof(act));
+ /*__sigemptyset (&act.sa_mask);*/
+ /*act.sa_flags = 0;*/
act.sa_handler = SIG_IGN;
- if (__sigemptyset (&act.sa_mask) < 0)
- return -1;
- act.sa_flags = 0;
return sigaction (sig, &act, NULL);
}
Modified: trunk/uClibc/libc/signal/signal.c
===================================================================
--- trunk/uClibc/libc/signal/signal.c 2008-11-29 15:35:51 UTC (rev 24183)
+++ trunk/uClibc/libc/signal/signal.c 2008-11-29 16:46:07 UTC (rev 24184)
@@ -42,9 +42,8 @@
}
act.sa_handler = handler;
- if (__sigemptyset (&act.sa_mask) < 0
- || __sigaddset (&act.sa_mask, sig) < 0)
- return SIG_ERR;
+ __sigemptyset (&act.sa_mask);
+ __sigaddset (&act.sa_mask, sig);
act.sa_flags = __sigismember (&_sigintr, sig) ? 0 : SA_RESTART;
if (sigaction (sig, &act, &oact) < 0)
return SIG_ERR;
Modified: trunk/uClibc/libc/signal/sigpause.c
===================================================================
--- trunk/uClibc/libc/signal/sigpause.c 2008-11-29 15:35:51 UTC (rev 24183)
+++ trunk/uClibc/libc/signal/sigpause.c 2008-11-29 16:46:07 UTC (rev 24184)
@@ -23,6 +23,7 @@
#define __FAVOR_BSD
#include <signal.h>
#include <stddef.h> /* For NULL. */
+#include <string.h>
/* libc_hidden_proto(sigprocmask) */
/* libc_hidden_proto(sigdelset) */
@@ -37,16 +38,18 @@
{
sigset_t set;
- if (is_sig != 0)
+ 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)
return -1;
}
- else if (sigset_set_old_mask (&set, sig_or_mask) < 0)
- return -1;
+ else
+ sigset_set_old_mask (&set, sig_or_mask);
return sigsuspend (&set);
}
Modified: trunk/uClibc/libc/signal/sigset-cvt-mask.h
===================================================================
--- trunk/uClibc/libc/signal/sigset-cvt-mask.h 2008-11-29 15:35:51 UTC (rev 24183)
+++ trunk/uClibc/libc/signal/sigset-cvt-mask.h 2008-11-29 16:46:07 UTC (rev 24184)
@@ -19,22 +19,12 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-static __inline__ int __attribute__ ((unused))
+static __inline__ void __attribute__ ((unused))
sigset_set_old_mask (sigset_t *set, int mask)
{
- unsigned long int *ptr;
- int cnt;
-
- ptr = &set->__val[0];
-
- *ptr++ = (unsigned int) mask;
-
- cnt = _SIGSET_NWORDS - 2;
- do
- *ptr++ = 0ul;
- while (--cnt >= 0);
-
- return 0;
+ if (_SIGSET_NWORDS > 1)
+ memset(set, 0, sizeof(*set));
+ set->__val[0] = (unsigned int) mask;
}
static __inline__ int __attribute__ ((unused))
Modified: trunk/uClibc/libc/signal/sigset.c
===================================================================
--- trunk/uClibc/libc/signal/sigset.c 2008-11-29 15:35:51 UTC (rev 24183)
+++ trunk/uClibc/libc/signal/sigset.c 2008-11-29 16:46:07 UTC (rev 24184)
@@ -31,18 +31,21 @@
struct sigaction act, oact;
sigset_t set;
+ /* Check signal extents to protect __sigismember. */
+ if (disp == SIG_ERR || sig < 1 || sig >= NSIG)
+ {
+ __set_errno (EINVAL);
+ return SIG_ERR;
+ }
+
#ifdef SIG_HOLD
/* Handle SIG_HOLD first. */
if (disp == SIG_HOLD)
{
/* Create an empty signal set. */
- if (__sigemptyset (&set) < 0)
- return SIG_ERR;
+ __sigemptyset (&set);
+ __sigaddset (&set, sig);
- /* Add the specified signal. */
- if (__sigaddset (&set, sig) < 0)
- return SIG_ERR;
-
/* Add the signal set to the current signal mask. */
if (sigprocmask (SIG_BLOCK, &set, NULL) < 0)
return SIG_ERR;
@@ -51,28 +54,17 @@
}
#endif /* SIG_HOLD */
- /* Check signal extents to protect __sigismember. */
- if (disp == SIG_ERR || sig < 1 || sig >= NSIG)
- {
- __set_errno (EINVAL);
- return SIG_ERR;
- }
-
+ memset(&act, 0, sizeof(act));
+ //__sigemptyset (&act.sa_mask);
+ //act.sa_flags = 0;
act.sa_handler = disp;
- if (__sigemptyset (&act.sa_mask) < 0)
- return SIG_ERR;
- act.sa_flags = 0;
if (sigaction (sig, &act, &oact) < 0)
return SIG_ERR;
- /* Create an empty signal set. */
- if (__sigemptyset (&set) < 0)
- return SIG_ERR;
+ /* Create an empty signal set. Add the specified signal. */
+ __sigemptyset (&set);
+ __sigaddset (&set, sig);
- /* Add the specified signal. */
- if (__sigaddset (&set, sig) < 0)
- return SIG_ERR;
-
/* Remove the signal set from the current signal mask. */
if (sigprocmask (SIG_UNBLOCK, &set, NULL) < 0)
return SIG_ERR;
Modified: trunk/uClibc/libc/signal/sigsetmask.c
===================================================================
--- trunk/uClibc/libc/signal/sigsetmask.c 2008-11-29 15:35:51 UTC (rev 24183)
+++ trunk/uClibc/libc/signal/sigsetmask.c 2008-11-29 16:46:07 UTC (rev 24184)
@@ -19,6 +19,7 @@
#define __UCLIBC_HIDE_DEPRECATED__
#include <errno.h>
#include <signal.h>
+#include <string.h>
/* libc_hidden_proto(sigprocmask) */
@@ -31,13 +32,9 @@
{
sigset_t set, oset;
- if (sigset_set_old_mask (&set, mask) < 0)
- return -1;
-
+ sigset_set_old_mask (&set, mask);
if (sigprocmask (SIG_SETMASK, &set, &oset) < 0)
return -1;
-
-
return sigset_get_old_mask (&oset);
}
libc_hidden_def(sigsetmask)
Modified: trunk/uClibc/libc/signal/sigwait.c
===================================================================
--- trunk/uClibc/libc/signal/sigwait.c 2008-11-29 15:35:51 UTC (rev 24183)
+++ trunk/uClibc/libc/signal/sigwait.c 2008-11-29 16:46:07 UTC (rev 24184)
@@ -28,8 +28,8 @@
int __sigwait (const sigset_t *set, int *sig) attribute_hidden;
int __sigwait (const sigset_t *set, int *sig)
{
- int ret = 1;
- if ((ret = sigwaitinfo(set, NULL)) != -1) {
+ int ret = sigwaitinfo(set, NULL);
+ if (ret != -1) {
*sig = ret;
return 0;
}
@@ -41,7 +41,7 @@
/* libc_hidden_proto(sigaction) */
/* libc_hidden_proto(sigsuspend) */
-static int was_sig; /* obviously not thread-safe */
+static smallint was_sig; /* obviously not thread-safe */
static void ignore_signal(int sig)
{
was_sig = sig;
Modified: trunk/uClibc/libc/signal/sysv_signal.c
===================================================================
--- trunk/uClibc/libc/signal/sysv_signal.c 2008-11-29 15:35:51 UTC (rev 24183)
+++ trunk/uClibc/libc/signal/sysv_signal.c 2008-11-29 16:46:07 UTC (rev 24184)
@@ -47,10 +47,8 @@
}
act.sa_handler = handler;
- if (__sigemptyset (&act.sa_mask) < 0)
- return SIG_ERR;
- act.sa_flags = SA_ONESHOT | SA_NOMASK | SA_INTERRUPT;
- act.sa_flags &= ~SA_RESTART;
+ __sigemptyset (&act.sa_mask);
+ act.sa_flags = (SA_ONESHOT | SA_NOMASK | SA_INTERRUPT) & ~SA_RESTART;
if (sigaction (sig, &act, &oact) < 0)
return SIG_ERR;
Modified: trunk/uClibc/libc/stdlib/abort.c
===================================================================
--- trunk/uClibc/libc/stdlib/abort.c 2008-11-29 15:35:51 UTC (rev 24183)
+++ trunk/uClibc/libc/stdlib/abort.c 2008-11-29 16:46:07 UTC (rev 24184)
@@ -60,9 +60,9 @@
__UCLIBC_MUTEX_LOCK_CANCEL_UNSAFE(mylock);
/* Unmask SIGABRT to be sure we can get it */
- if (__sigemptyset(&sigs) == 0 && __sigaddset(&sigs, SIGABRT) == 0) {
- sigprocmask(SIG_UNBLOCK, &sigs, (sigset_t *) NULL);
- }
+ __sigemptyset(&sigs);
+ __sigaddset(&sigs, SIGABRT);
+ sigprocmask(SIG_UNBLOCK, &sigs, (sigset_t *) NULL);
while (1) {
/* Try to suicide with a SIGABRT */
@@ -91,9 +91,10 @@
been_there_done_that++;
memset(&act, '\0', sizeof(struct sigaction));
- act.sa_handler = SIG_DFL;
+ if (SIG_DFL) /* if it's constant zero, already done */
+ act.sa_handler = SIG_DFL;
__sigfillset(&act.sa_mask);
- act.sa_flags = 0;
+ /*act.sa_flags = 0; - memset did it */
sigaction(SIGABRT, &act, NULL);
goto abort_it;
Modified: trunk/uClibc/libc/sysdeps/linux/alpha/sigprocmask.c
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/alpha/sigprocmask.c 2008-11-29 15:35:51 UTC (rev 24183)
+++ trunk/uClibc/libc/sysdeps/linux/alpha/sigprocmask.c 2008-11-29 16:46:07 UTC (rev 24184)
@@ -51,10 +51,9 @@
if (oset)
{
+ if (_SIGSET_NWORDS > 1)
+ memset(oset, 0, sizeof(*oset));
oset->__val[0] = result;
- result = _SIGSET_NWORDS;
- while (--result > 0)
- oset->__val[result] = 0;
}
return 0;
}
Modified: trunk/uClibc/libc/sysdeps/linux/common/ssp.c
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/common/ssp.c 2008-11-29 15:35:51 UTC (rev 24183)
+++ trunk/uClibc/libc/sysdeps/linux/common/ssp.c 2008-11-29 16:46:07 UTC (rev 24184)
@@ -57,10 +57,11 @@
sigprocmask(SIG_BLOCK, &mask, NULL); /* except SSP_SIGTYPE */
/* Make the default handler associated with the signal handler */
- memset(&sa, 0, sizeof(struct sigaction));
+ memset(&sa, 0, sizeof(sa));
sigfillset(&sa.sa_mask); /* Block all signals */
- sa.sa_flags = 0;
- sa.sa_handler = SIG_DFL;
+ /* sa.sa_flags = 0; - memset did it */
+ if (SIG_DFL) /* if it's constant zero, it's already done */
+ sa.sa_handler = SIG_DFL;
sigaction(SSP_SIGTYPE, &sa, NULL);
}
Modified: trunk/uClibc/libc/unistd/sleep.c
===================================================================
--- trunk/uClibc/libc/unistd/sleep.c 2008-11-29 15:35:51 UTC (rev 24183)
+++ trunk/uClibc/libc/unistd/sleep.c 2008-11-29 16:46:07 UTC (rev 24184)
@@ -66,9 +66,9 @@
/* Linux will wake up the system call, nanosleep, when SIGCHLD
arrives even if SIGCHLD is ignored. We have to deal with it
in libc. We block SIGCHLD first. */
- if (__sigemptyset (&set) < 0
- || __sigaddset (&set, SIGCHLD) < 0
- || sigprocmask (SIG_BLOCK, &set, &oset))
+ __sigemptyset (&set);
+ __sigaddset (&set, SIGCHLD);
+ if (sigprocmask (SIG_BLOCK, &set, &oset))
return -1;
/* If SIGCHLD is already blocked, we don't have to do anything. */
@@ -77,8 +77,8 @@
int saved_errno;
struct sigaction oact;
- if (__sigemptyset (&set) < 0 || __sigaddset (&set, SIGCHLD) < 0)
- return -1;
+ __sigemptyset (&set);
+ __sigaddset (&set, SIGCHLD);
/* We get the signal handler for SIGCHLD. */
if (sigaction (SIGCHLD, (struct sigaction *) NULL, &oact) < 0)
@@ -136,9 +136,9 @@
return 0;
/* block SIGALRM */
- if (__sigemptyset (&set) < 0
- || __sigaddset (&set, SIGALRM) < 0
- || sigprocmask (SIG_BLOCK, &set, &oset))
+ __sigemptyset (&set);
+ __sigaddset (&set, SIGALRM);
+ if (sigprocmask (SIG_BLOCK, &set, &oset))
return seconds;
act.sa_handler = sleep_alarm_handler;
Modified: trunk/uClibc/libpthread/linuxthreads/pthread.c
===================================================================
--- trunk/uClibc/libpthread/linuxthreads/pthread.c 2008-11-29 15:35:51 UTC (rev 24183)
+++ trunk/uClibc/libpthread/linuxthreads/pthread.c 2008-11-29 16:46:07 UTC (rev 24184)
@@ -1151,9 +1151,11 @@
/* Reset the signal handlers behaviour for the signals the
implementation uses since this would be passed to the new
process. */
- sigemptyset(&sa.sa_mask);
- sa.sa_flags = 0;
- sa.sa_handler = SIG_DFL;
+ memset(&sa, 0, sizeof(sa));
+ /*sigemptyset(&sa.sa_mask);*/
+ /*sa.sa_flags = 0;*/
+ if (SIG_DFL) /* if it's constant zero, it's already done too */
+ sa.sa_handler = SIG_DFL;
__libc_sigaction(__pthread_sig_restart, &sa, NULL);
__libc_sigaction(__pthread_sig_cancel, &sa, NULL);
if (__pthread_sig_debug > 0)
Modified: trunk/uClibc/libpthread/linuxthreads.old/pthread.c
===================================================================
--- trunk/uClibc/libpthread/linuxthreads.old/pthread.c 2008-11-29 15:35:51 UTC (rev 24183)
+++ trunk/uClibc/libpthread/linuxthreads.old/pthread.c 2008-11-29 16:46:07 UTC (rev 24184)
@@ -928,9 +928,11 @@
/* Reset the signal handlers behaviour for the signals the
implementation uses since this would be passed to the new
process. */
- sigemptyset(&sa.sa_mask);
- sa.sa_flags = 0;
- sa.sa_handler = SIG_DFL;
+ memset(&sa, 0, sizeof(sa));
+ /*sigemptyset(&sa.sa_mask);*/
+ /*sa.sa_flags = 0;*/
+ if (SIG_DFL) /* if it's constant zero, it's already done */
+ sa.sa_handler = SIG_DFL;
__libc_sigaction(__pthread_sig_restart, &sa, NULL);
__libc_sigaction(__pthread_sig_cancel, &sa, NULL);
if (__pthread_sig_debug > 0)
More information about the uClibc-cvs
mailing list