diff options
author | Carmelo Amoroso <carmelo.amoroso@st.com> | 2008-12-03 14:04:03 +0000 |
---|---|---|
committer | Carmelo Amoroso <carmelo.amoroso@st.com> | 2008-12-03 14:04:03 +0000 |
commit | d5c32667ad11ff38dc46be527266297b38a341d1 (patch) | |
tree | b3ce68f179d97e6e25e5c8e7ace845c4a561322b /libpthread/linuxthreads/pthread.c | |
parent | 329ef3196b396a70eecd5a4789845d368b488ab7 (diff) | |
download | uClibc-alpine-d5c32667ad11ff38dc46be527266297b38a341d1.tar.bz2 uClibc-alpine-d5c32667ad11ff38dc46be527266297b38a341d1.tar.xz |
Synch with trunk @ 24242
Step 18: some more synch: hidden_proto, size reduction
and signal handling changes.
Diffstat (limited to 'libpthread/linuxthreads/pthread.c')
-rw-r--r-- | libpthread/linuxthreads/pthread.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/libpthread/linuxthreads/pthread.c b/libpthread/linuxthreads/pthread.c index 36961a1c9..2d0f49ee9 100644 --- a/libpthread/linuxthreads/pthread.c +++ b/libpthread/linuxthreads/pthread.c @@ -561,22 +561,19 @@ 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; __libc_sigaction(__pthread_sig_restart, &sa, NULL); sa.sa_handler = pthread_handle_sigcancel; sigaddset(&sa.sa_mask, __pthread_sig_restart); - /* sa.sa_flags = 0; */ __libc_sigaction(__pthread_sig_cancel, &sa, NULL); if (__pthread_sig_debug > 0) { sa.sa_handler = pthread_handle_sigdebug; - sigemptyset(&sa.sa_mask); - /* sa.sa_flags = 0; */ + __sigemptyset(&sa.sa_mask); __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. */ @@ -834,8 +831,7 @@ int __pthread_create(pthread_t *thread, const pthread_attr_t *attr, request.req_args.create.attr = attr; request.req_args.create.fn = start_routine; request.req_args.create.arg = arg; - sigprocmask(SIG_SETMASK, (const sigset_t *) NULL, - &request.req_args.create.mask); + sigprocmask(SIG_SETMASK, NULL, &request.req_args.create.mask); TEMP_FAILURE_RETRY(write_not_cancel(__pthread_manager_request, (char *) &request, sizeof(request))); suspend(self); @@ -1151,9 +1147,9 @@ void __pthread_kill_other_threads_np(void) /* 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)); + 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) @@ -1230,7 +1226,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); @@ -1317,7 +1313,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); |