diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-09-24 07:18:48 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-09-24 07:18:48 +0000 |
commit | 362038b0cab33f8e61ada54aaaf4312e44a0922b (patch) | |
tree | fa5a5c729c0160ef441981e4ecb66ec381cb8fe8 /nptl/pthread_create.c | |
parent | 8f1913a918177f148909281322f2f0638472fed3 (diff) | |
download | glibc-362038b0cab33f8e61ada54aaaf4312e44a0922b.tar.gz glibc-362038b0cab33f8e61ada54aaaf4312e44a0922b.tar.xz glibc-362038b0cab33f8e61ada54aaaf4312e44a0922b.zip |
Update.
2004-09-23 Kaz Kojima <kkojima@rr.iij4u.or.jp> * sysdeps/unix/sysv/linux/sh/sysdep.h (INTERNAL_SYSCALL_NCS): Define.
Diffstat (limited to 'nptl/pthread_create.c')
-rw-r--r-- | nptl/pthread_create.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c index 160656863d..14306867c9 100644 --- a/nptl/pthread_create.c +++ b/nptl/pthread_create.c @@ -227,11 +227,6 @@ start_thread (void *arg) struct pthread *pd = (struct pthread *) arg; - /* Get the lock the parent locked to force synchronization. */ - lll_lock (pd->lock); - /* And give it up right away. */ - lll_unlock (pd->lock); - #if HP_TIMING_AVAIL /* Remember the time when the thread was started. */ hp_timing_t now; @@ -257,6 +252,15 @@ start_thread (void *arg) /* Store the new cleanup handler info. */ THREAD_SETMEM (pd, cleanup_jmp_buf, &unwind_buf); + int oldtype = CANCEL_ASYNC (); + + /* Get the lock the parent locked to force synchronization. */ + lll_lock (pd->lock); + /* And give it up right away. */ + lll_unlock (pd->lock); + + CANCEL_RESET (oldtype); + /* Run the code the user provided. */ #ifdef CALL_THREAD_FCT THREAD_SETMEM (pd, result, CALL_THREAD_FCT (pd)); |