From: Ulrich Drepper Date: Tue, 20 Aug 2002 08:12:32 +0000 (+0000) Subject: Update. X-Git-Tag: upstream/2.30~21404 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=58d2d09bde3578bd25d55df03e962764ba81bd13;p=external%2Fglibc.git Update. * sysdeps/generic/dl-tls.c (allocate_dtv): Optimize a bit. --- diff --git a/ChangeLog b/ChangeLog index bfd9a2d..9ebb06c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2002-08-20 Ulrich Drepper + * sysdeps/generic/dl-tls.c (allocate_dtv): Optimize a bit. + * elf/Versions [ld] (GLIBC_PRIVATE): Add _dl_get_tls_static_info. * sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage): Move dtv memory allocation to... diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 5b08d3f..6b6195b 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,3 +1,10 @@ +2002-08-20 Ulrich Drepper + + * manager.c (pthread_handle_create): Pass NULL to _dl_allocate_tls. + Pass true to _dl_deallocate_tls. + (pthread_free): Likewise. + * pthread.c (__pthread_initialize_manager): Likewise. + 2002-08-19 Ulrich Drepper * sysdeps/i386/useldt.h (DO_SET_THREAD_AREA): Use correct shift when diff --git a/linuxthreads/manager.c b/linuxthreads/manager.c index 655c7d6..24be941 100644 --- a/linuxthreads/manager.c +++ b/linuxthreads/manager.c @@ -599,7 +599,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr, int saved_errno = 0; #ifdef USE_TLS - new_thread = _dl_allocate_tls (); + new_thread = _dl_allocate_tls (NULL); if (new_thread == NULL) return EAGAIN; #else @@ -619,7 +619,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr, if (sseg >= PTHREAD_THREADS_MAX) { #ifdef USE_TLS - _dl_deallocate_tls (new_thread); + _dl_deallocate_tls (new_thread, true); #endif return EAGAIN; } @@ -803,7 +803,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr, #endif } #ifdef USE_TLS - _dl_deallocate_tls (new_thread); + _dl_deallocate_tls (new_thread, true); #endif __pthread_handles[sseg].h_descr = NULL; __pthread_handles[sseg].h_bottom = NULL; @@ -890,7 +890,7 @@ static void pthread_free(pthread_descr th) munmap(guardaddr, stacksize + guardsize); #ifdef USE_TLS - _dl_deallocate_tls (th); + _dl_deallocate_tls (th, true); #endif } } diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c index c43176c..b0ef7fb 100644 --- a/linuxthreads/pthread.c +++ b/linuxthreads/pthread.c @@ -623,7 +623,8 @@ int __pthread_initialize_manager(void) #ifdef USE_TLS /* Allocate memory for the thread descriptor and the dtv. */ - __pthread_handles[1].h_descr = manager_thread = tcb = _dl_allocate_tls (); + __pthread_handles[1].h_descr = manager_thread = tcb + = _dl_allocate_tls (NULL); if (tcb == NULL) { free(__pthread_manager_thread_bos); __libc_close(manager_pipe[0]); diff --git a/sysdeps/generic/dl-tls.c b/sysdeps/generic/dl-tls.c index 38f40ac..c969464 100644 --- a/sysdeps/generic/dl-tls.c +++ b/sysdeps/generic/dl-tls.c @@ -212,11 +212,9 @@ allocate_dtv (void *result) { /* This is the initial length of the dtv. */ dtv[0].counter = dtv_length; - /* Fill in the generation number. */ - dtv[1].counter = GL(dl_tls_generation) = 0; - /* Initialize all of the rest of the dtv with zero to indicate - nothing there. */ - memset (dtv + 2, '\0', dtv_length * sizeof (dtv_t)); + /* Initialize all of the rest of the dtv (including the + generation counter) with zero to indicate nothing there. */ + memset (dtv + 1, '\0', (dtv_length + 1) * sizeof (dtv_t)); /* Add the dtv to the thread data structures. */ INSTALL_DTV (result, dtv);