aboutsummaryrefslogtreecommitdiff
path: root/linuxthreads
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads')
-rw-r--r--linuxthreads/ChangeLog9
-rw-r--r--linuxthreads/manager.c21
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 |