diff options
author | Thomas Schwinge <thomas@schwinge.name> | 2011-10-20 17:04:43 +0200 |
---|---|---|
committer | Thomas Schwinge <thomas@schwinge.name> | 2011-10-20 17:07:46 +0200 |
commit | 221b60d8f0cf39511d26e275b3a0e26a4bdc4f15 (patch) | |
tree | 3709e6de0bce10163a85421fc2376fe35863c312 /pthread/pt-create.c | |
parent | 33d3344be6ab376cc73f12c8355a262cb3057021 (diff) | |
parent | 1b37ff3740644d3febf6ae6e7f756a8d152a37e6 (diff) |
Merge branch 'tls'
Conflicts:
ChangeLog
Makefile
pthread/pt-exit.c
pthread/pt-internal.h
sysdeps/mach/hurd/ia32/pt-setup.c
sysdeps/mach/hurd/pt-docancel.c
sysdeps/mach/hurd/pt-sysdep.h
Diffstat (limited to 'pthread/pt-create.c')
-rw-r--r-- | pthread/pt-create.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/pthread/pt-create.c b/pthread/pt-create.c index 8f62b78e..346c6979 100644 --- a/pthread/pt-create.c +++ b/pthread/pt-create.c @@ -129,6 +129,13 @@ __pthread_create_internal (struct __pthread **thread, if (err) goto failed_thread_alloc; +#ifdef ENABLE_TLS + pthread->tcb = _dl_allocate_tls (NULL); + if (!pthread->tcb) + goto failed_thread_tls_alloc; + pthread->tcb->tcb = pthread->tcb; +#endif /* ENABLE_TLS */ + /* And initialize the rest of the machine context. This may include additional machine- and system-specific initializations that prove convenient. */ @@ -194,6 +201,10 @@ __pthread_create_internal (struct __pthread **thread, failed_sigstate: __pthread_sigstate_destroy (pthread); failed_setup: +#ifdef ENABLE_TLS + _dl_deallocate_tls (pthread->tcb, 1); + failed_thread_tls_alloc: +#endif /* ENABLE_TLS */ __pthread_thread_dealloc (pthread); __pthread_thread_halt (pthread); failed_thread_alloc: |