summaryrefslogtreecommitdiff
path: root/pthread/pt-create.c
diff options
context:
space:
mode:
authorNeal H. Walfield <neal@gnu.org>2005-05-04 16:04:06 +0000
committerNeal H. Walfield <neal@gnu.org>2005-05-04 16:04:06 +0000
commitf19e83eb2a17d0e87b90a050e7550e1e6985196f (patch)
treebc968bbd260b351e675ddbab73647d36a0b3d89a /pthread/pt-create.c
parent81cb5487d08c59fca0190cf03a07bdf45fe90ea8 (diff)
libpthread/
2005-05-04 Neal H. Walfield <neal@gnu.org> * Makefile (SRCS): Add pt-thread_dealloc.c. * sysdeps/mach/pt-thread-dealloc.c: New file. * pthread/pt-internal.h (__pthread_thread_dealloc): New declaration. (__pthread_thread_halt): Add parameter NEED_DEALLOC. Update callers. * sysdeps/mach/pt-thread-halt.c (__pthread_thread_halt): Respect new NEED_DEALLOC parameter. Move code which deallocates kernel resources from here ... * sysdeps/mach/pt-thread-dealloc.c (__pthread_thread_dealloc): ...to here. * pthread/pt-create.c (__pthread_create_internal): Call __pthread_thread_dealloc on failure. * pthread/pt-exit.c (pthread_exit): Call __pthread_thread_dealloc. * sysdeps/mach/pt-thread-alloc.c (create_wakeupmsg): Call __mach_port_destroy to deallocate the receive right. __mach_port_deallocate won't do it. * pthread/pt-detach.c (pthread_detach): Don't call __pthread_thread_halt a second time. * sysdeps/mach/hurd/pt-sysdep.c (_cthread_init_routine): Fix declaration. (init_routine): Update declaration and remove gratuitous cast.
Diffstat (limited to 'pthread/pt-create.c')
-rw-r--r--pthread/pt-create.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/pthread/pt-create.c b/pthread/pt-create.c
index cf5b32d..bad5d83 100644
--- a/pthread/pt-create.c
+++ b/pthread/pt-create.c
@@ -192,7 +192,8 @@ __pthread_create_internal (struct __pthread **thread,
failed_sigstate:
__pthread_sigstate_destroy (pthread);
failed_setup:
- __pthread_thread_halt (pthread);
+ __pthread_thread_dealloc (pthread);
+ __pthread_thread_halt (pthread, 0);
failed_thread_alloc:
__pthread_stack_dealloc (pthread->stackaddr, pthread->stacksize);
pthread->stack = 0;