diff options
Diffstat (limited to 'linuxthreads')
-rw-r--r-- | linuxthreads/ChangeLog | 9 | ||||
-rw-r--r-- | linuxthreads/manager.c | 21 |
2 files changed, 10 insertions, 20 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 00441fa..3d4bfb2 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,3 +1,12 @@ +2001-02-20 Hans Boehm <hans_boehm@hp.com> + + * manager.c (manager_mask): Removed static vesion. Now always local + to __pthread_manager(). + (manager_mask_all): Removed completely. + (__pthread_manager): Remove manager_mask_all initialization. + (pthread_handle_create): Remove code to set and reset signal mask + around __clone2() calls. + 2001-02-17 Jakub Jelinek <jakub@redhat.com> * spinlock.c (__pthread_lock): Force lock->__status to be read from diff --git a/linuxthreads/manager.c b/linuxthreads/manager.c index 24e3f75..7f35758 100644 --- a/linuxthreads/manager.c +++ b/linuxthreads/manager.c @@ -88,13 +88,6 @@ static int main_thread_exiting; static pthread_t pthread_threads_counter; -#ifdef NEED_SEPARATE_REGISTER_STACK -/* Signal masks for the manager. These have to be global only when clone2 - is used since it's currently borken wrt signals in the child. */ -static sigset_t manager_mask; /* Manager normal signal mask */ -static sigset_t manager_mask_all; /* All bits set. */ -#endif - /* Forward declarations */ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr, @@ -113,9 +106,7 @@ int __pthread_manager(void *arg) { int reqfd = (int) (long int) arg; struct pollfd ufd; -#ifndef NEED_SEPARATE_REGISTER_STACK sigset_t manager_mask; -#endif int n; struct pthread_request request; @@ -133,9 +124,6 @@ int __pthread_manager(void *arg) if (__pthread_threads_debug && __pthread_sig_debug > 0) sigdelset(&manager_mask, __pthread_sig_debug); sigprocmask(SIG_SETMASK, &manager_mask, NULL); -#ifdef NEED_SEPARATE_REGISTER_STACK - sigfillset(&manager_mask_all); -#endif /* Raise our priority to match that of main thread */ __pthread_manager_adjust_prio(__pthread_main_thread->p_priority); /* Synchronize debugging of the thread manager */ @@ -583,17 +571,12 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr, And there is some argument for changing the __clone2 interface to pass sp and bsp instead, making it more IA64 specific, but allowing stacks to grow outward from each - other, to get less paging and fewer mmaps. Clone2 - currently can't take signals in the child right after - process creation. Mask them in the child. It resets the - mask once it starts up. */ - sigprocmask(SIG_SETMASK, &manager_mask_all, NULL); + other, to get less paging and fewer mmaps. */ pid = __clone2(pthread_start_thread_event, (void **)new_thread_bottom, (char *)new_thread - new_thread_bottom, CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | __pthread_sig_cancel, new_thread); - sigprocmask(SIG_SETMASK, &manager_mask, NULL); #else pid = __clone(pthread_start_thread_event, (void **) new_thread, CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | @@ -625,13 +608,11 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr, if (pid == 0) { #ifdef NEED_SEPARATE_REGISTER_STACK - sigprocmask(SIG_SETMASK, &manager_mask_all, NULL); pid = __clone2(pthread_start_thread, (void **)new_thread_bottom, (char *)new_thread - new_thread_bottom, CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | __pthread_sig_cancel, new_thread); - sigprocmask(SIG_SETMASK, &manager_mask, NULL); #else pid = __clone(pthread_start_thread, (void **) new_thread, CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | |