summaryrefslogtreecommitdiff
path: root/libpthread
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2008-12-01 15:31:22 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2008-12-01 15:31:22 +0000
commit0e4d4dd89170d47a662f1cd0de1b4f3a5dbc1f2d (patch)
tree324429d9476664c8dff6d315daaf98b4a011c48d /libpthread
parent4298bd6e30f8841250f4912fdbda7a4a2230b561 (diff)
optimize signal mask ops. comment out "impossible" errors
text data bss dec hex filename - 1179 13 2 1194 4aa libc/misc/syslog/syslog.o + 1165 13 2 1180 49c libc/misc/syslog/syslog.o - 435 4 0 439 1b7 libc/pwd_grp/lckpwdf.o + 393 4 0 397 18d libc/pwd_grp/lckpwdf.o - 38 0 0 38 26 libc/signal/sigandset.o + 32 0 0 32 20 libc/signal/sigandset.o - 63 0 0 63 3f libc/signal/sigblock.o + 56 0 0 56 38 libc/signal/sigblock.o - 22 0 0 22 16 libc/signal/sigempty.o + 20 0 0 20 14 libc/signal/sigempty.o - 25 0 0 25 19 libc/signal/sigfillset.o + 20 0 0 20 14 libc/signal/sigfillset.o - 34 0 0 34 22 libc/signal/sigisempty.o + 16 0 0 16 10 libc/signal/sigisempty.o - 38 0 0 38 26 libc/signal/sigorset.o + 32 0 0 32 20 libc/signal/sigorset.o - 119 0 0 119 77 libc/signal/sigpause.o + 113 0 0 113 71 libc/signal/sigpause.o - 215 0 0 215 d7 libc/signal/sigset.o + 211 0 0 211 d3 libc/signal/sigset.o - 63 0 0 63 3f libc/signal/sigsetmask.o + 56 0 0 56 38 libc/signal/sigsetmask.o - 194 0 1 195 c3 libc/stdlib/abort.o + 183 0 1 184 b8 libc/stdlib/abort.o - 323 0 0 323 143 libc/unistd/sleep.o + 309 0 0 309 135 libc/unistd/sleep.o
Diffstat (limited to 'libpthread')
-rw-r--r--libpthread/linuxthreads.old/manager.c2
-rw-r--r--libpthread/linuxthreads.old/pthread.c15
-rw-r--r--libpthread/linuxthreads.old/signals.c7
-rw-r--r--libpthread/linuxthreads/manager.c2
-rw-r--r--libpthread/linuxthreads/pthread.c15
-rw-r--r--libpthread/linuxthreads/signals.c4
-rw-r--r--libpthread/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c2
7 files changed, 25 insertions, 22 deletions
diff --git a/libpthread/linuxthreads.old/manager.c b/libpthread/linuxthreads.old/manager.c
index ef9046de1..2be474c53 100644
--- a/libpthread/linuxthreads.old/manager.c
+++ b/libpthread/linuxthreads.old/manager.c
@@ -137,7 +137,7 @@ int attribute_noreturn __pthread_manager(void *arg)
#endif /* __UCLIBC_HAS_XLOCALE__ */
/* Block all signals except __pthread_sig_cancel and SIGTRAP */
- sigfillset(&manager_mask);
+ __sigfillset(&manager_mask);
sigdelset(&manager_mask, __pthread_sig_cancel); /* for thread termination */
sigdelset(&manager_mask, SIGTRAP); /* for debugging purposes */
if (__pthread_threads_debug && __pthread_sig_debug > 0)
diff --git a/libpthread/linuxthreads.old/pthread.c b/libpthread/linuxthreads.old/pthread.c
index 71326a097..c13c63208 100644
--- a/libpthread/linuxthreads.old/pthread.c
+++ b/libpthread/linuxthreads.old/pthread.c
@@ -471,9 +471,10 @@ static void pthread_initialize(void)
/* Setup signal handlers for the initial thread.
Since signal handlers are shared between threads, these settings
will be inherited by all other threads. */
+ memset(&sa, 0, sizeof(sa));
sa.sa_handler = pthread_handle_sigrestart;
- sigemptyset(&sa.sa_mask);
- sa.sa_flags = 0;
+ /* __sigemptyset(&sa.sa_mask); */
+ /* sa.sa_flags = 0; */
__libc_sigaction(__pthread_sig_restart, &sa, NULL);
sa.sa_handler = pthread_handle_sigcancel;
sigaddset(&sa.sa_mask, __pthread_sig_restart);
@@ -481,12 +482,12 @@ static void pthread_initialize(void)
__libc_sigaction(__pthread_sig_cancel, &sa, NULL);
if (__pthread_sig_debug > 0) {
sa.sa_handler = pthread_handle_sigdebug;
- sigemptyset(&sa.sa_mask);
+ __sigemptyset(&sa.sa_mask);
/* sa.sa_flags = 0; */
__libc_sigaction(__pthread_sig_debug, &sa, NULL);
}
/* Initially, block __pthread_sig_restart. Will be unblocked on demand. */
- sigemptyset(&mask);
+ __sigemptyset(&mask);
sigaddset(&mask, __pthread_sig_restart);
sigprocmask(SIG_BLOCK, &mask, NULL);
/* And unblock __pthread_sig_cancel if it has been blocked. */
@@ -929,7 +930,7 @@ void __pthread_kill_other_threads_np(void)
implementation uses since this would be passed to the new
process. */
memset(&sa, 0, sizeof(sa));
- /*sigemptyset(&sa.sa_mask);*/
+ /*__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;
@@ -1009,7 +1010,7 @@ __pthread_timedsuspend_old(pthread_descr self, const struct timespec *abstime)
THREAD_SETMEM(self, p_signal_jmp, &jmpbuf);
THREAD_SETMEM(self, p_signal, 0);
/* Unblock the restart signal */
- sigemptyset(&unblock);
+ __sigemptyset(&unblock);
sigaddset(&unblock, __pthread_sig_restart);
sigprocmask(SIG_UNBLOCK, &unblock, &initial_mask);
@@ -1094,7 +1095,7 @@ int __pthread_timedsuspend_new(pthread_descr self, const struct timespec *abstim
THREAD_SETMEM(self, p_signal_jmp, &jmpbuf);
THREAD_SETMEM(self, p_signal, 0);
/* Unblock the restart signal */
- sigemptyset(&unblock);
+ __sigemptyset(&unblock);
sigaddset(&unblock, __pthread_sig_restart);
sigprocmask(SIG_UNBLOCK, &unblock, &initial_mask);
diff --git a/libpthread/linuxthreads.old/signals.c b/libpthread/linuxthreads.old/signals.c
index 23ba9778f..90655f8c1 100644
--- a/libpthread/linuxthreads.old/signals.c
+++ b/libpthread/linuxthreads.old/signals.c
@@ -196,7 +196,7 @@ int sigwait(const sigset_t * set, int * sig)
and if not, install our dummy handler. This is conformant to
POSIX: "The effect of sigwait() on the signal actions for the
signals in set is unspecified." */
- sigfillset(&mask);
+ __sigfillset(&mask);
sigdelset(&mask, __pthread_sig_cancel);
for (s = 1; s <= NSIG; s++) {
if (sigismember(set, s) &&
@@ -207,9 +207,10 @@ int sigwait(const sigset_t * set, int * sig)
if (sighandler[s].old == NULL ||
sighandler[s].old == (arch_sighandler_t) SIG_DFL ||
sighandler[s].old == (arch_sighandler_t) SIG_IGN) {
+ memset(&sa, 0, sizeof(sa));
sa.sa_handler = pthread_null_sighandler;
- sigemptyset(&sa.sa_mask);
- sa.sa_flags = 0;
+ /* __sigemptyset(&sa.sa_mask); */
+ /* sa.sa_flags = 0; */
sigaction(s, &sa, NULL);
}
}
diff --git a/libpthread/linuxthreads/manager.c b/libpthread/linuxthreads/manager.c
index b0a2a3712..be1e8d2be 100644
--- a/libpthread/linuxthreads/manager.c
+++ b/libpthread/linuxthreads/manager.c
@@ -132,7 +132,7 @@ __pthread_manager(void *arg)
self->p_h_errnop = &self->p_h_errno;
#endif
/* Block all signals except __pthread_sig_cancel and SIGTRAP */
- sigfillset(&manager_mask);
+ __sigfillset(&manager_mask);
sigdelset(&manager_mask, __pthread_sig_cancel); /* for thread termination */
sigdelset(&manager_mask, SIGTRAP); /* for debugging purposes */
if (__pthread_threads_debug && __pthread_sig_debug > 0)
diff --git a/libpthread/linuxthreads/pthread.c b/libpthread/linuxthreads/pthread.c
index ce0e9b62c..8cc9916cf 100644
--- a/libpthread/linuxthreads/pthread.c
+++ b/libpthread/linuxthreads/pthread.c
@@ -561,9 +561,10 @@ static void pthread_initialize(void)
/* Setup signal handlers for the initial thread.
Since signal handlers are shared between threads, these settings
will be inherited by all other threads. */
+ memset(&sa, 0, sizeof(sa));
sa.sa_handler = pthread_handle_sigrestart;
- sigemptyset(&sa.sa_mask);
- sa.sa_flags = 0;
+ /* __sigemptyset(&sa.sa_mask); */
+ /* sa.sa_flags = 0; */
__libc_sigaction(__pthread_sig_restart, &sa, NULL);
sa.sa_handler = pthread_handle_sigcancel;
sigaddset(&sa.sa_mask, __pthread_sig_restart);
@@ -571,12 +572,12 @@ static void pthread_initialize(void)
__libc_sigaction(__pthread_sig_cancel, &sa, NULL);
if (__pthread_sig_debug > 0) {
sa.sa_handler = pthread_handle_sigdebug;
- sigemptyset(&sa.sa_mask);
+ __sigemptyset(&sa.sa_mask);
/* sa.sa_flags = 0; */
__libc_sigaction(__pthread_sig_debug, &sa, NULL);
}
/* Initially, block __pthread_sig_restart. Will be unblocked on demand. */
- sigemptyset(&mask);
+ __sigemptyset(&mask);
sigaddset(&mask, __pthread_sig_restart);
sigprocmask(SIG_BLOCK, &mask, NULL);
/* And unblock __pthread_sig_cancel if it has been blocked. */
@@ -1152,7 +1153,7 @@ void __pthread_kill_other_threads_np(void)
implementation uses since this would be passed to the new
process. */
memset(&sa, 0, sizeof(sa));
- /*sigemptyset(&sa.sa_mask);*/
+ /*__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;
@@ -1232,7 +1233,7 @@ __pthread_timedsuspend_old(pthread_descr self, const struct timespec *abstime)
THREAD_SETMEM(self, p_signal_jmp, &jmpbuf);
THREAD_SETMEM(self, p_signal, 0);
/* Unblock the restart signal */
- sigemptyset(&unblock);
+ __sigemptyset(&unblock);
sigaddset(&unblock, __pthread_sig_restart);
sigprocmask(SIG_UNBLOCK, &unblock, &initial_mask);
@@ -1319,7 +1320,7 @@ __pthread_timedsuspend_new(pthread_descr self, const struct timespec *abstime)
THREAD_SETMEM(self, p_signal_jmp, &jmpbuf);
THREAD_SETMEM(self, p_signal, 0);
/* Unblock the restart signal */
- sigemptyset(&unblock);
+ __sigemptyset(&unblock);
sigaddset(&unblock, __pthread_sig_restart);
sigprocmask(SIG_UNBLOCK, &unblock, &initial_mask);
diff --git a/libpthread/linuxthreads/signals.c b/libpthread/linuxthreads/signals.c
index 62e83211a..02bf1c64b 100644
--- a/libpthread/linuxthreads/signals.c
+++ b/libpthread/linuxthreads/signals.c
@@ -153,7 +153,7 @@ int __pthread_sigwait(const sigset_t * set, int * sig)
and if not, install our dummy handler. This is conformant to
POSIX: "The effect of sigwait() on the signal actions for the
signals in set is unspecified." */
- sigfillset(&mask);
+ __sigfillset(&mask);
sigdelset(&mask, __pthread_sig_cancel);
for (s = 1; s < NSIG; s++) {
if (sigismember(set, s) &&
@@ -165,7 +165,7 @@ int __pthread_sigwait(const sigset_t * set, int * sig)
__sighandler[s].old == (arch_sighandler_t) SIG_DFL ||
__sighandler[s].old == (arch_sighandler_t) SIG_IGN) {
sa.sa_handler = __pthread_null_sighandler;
- sigfillset(&sa.sa_mask);
+ __sigfillset(&sa.sa_mask);
sa.sa_flags = 0;
sigaction(s, &sa, NULL);
}
diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c
index 6cd0f09c1..31d614b40 100644
--- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c
+++ b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c
@@ -76,7 +76,7 @@ __attribute__ ((noinline))
change_sigmask (int how, sigset_t *oss)
{
sigset_t ss;
- sigfillset (&ss);
+ __sigfillset (&ss);
return pthread_sigmask (how, &ss, oss);
}