diff options
author | Eric Andersen <andersen@codepoet.org> | 2003-02-27 18:13:05 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2003-02-27 18:13:05 +0000 |
commit | 187dd78d7bd1c03fcf16e54a30314512d38e1a4a (patch) | |
tree | 9780638e5286b40da74a128c9f540a9ea720862f /libpthread/linuxthreads_db/td_ta_map_id2thr.c | |
parent | d4d6e2c50565da18253cd0d6f3332484142b6587 (diff) |
Major update for pthreads, based in large part on improvements
from glibc 2.3. This should make threads much more efficient.
-Erik
Diffstat (limited to 'libpthread/linuxthreads_db/td_ta_map_id2thr.c')
-rw-r--r-- | libpthread/linuxthreads_db/td_ta_map_id2thr.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/libpthread/linuxthreads_db/td_ta_map_id2thr.c b/libpthread/linuxthreads_db/td_ta_map_id2thr.c index 5171a5bf1..ddb6492e2 100644 --- a/libpthread/linuxthreads_db/td_ta_map_id2thr.c +++ b/libpthread/linuxthreads_db/td_ta_map_id2thr.c @@ -1,5 +1,5 @@ /* Map thread ID to thread handle. - Copyright (C) 1999, 2001 Free Software Foundation, Inc. + Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999. @@ -19,6 +19,7 @@ 02111-1307 USA. */ #include "thread_dbP.h" +#include "../linuxthreads/internals.h" td_err_e @@ -28,7 +29,7 @@ td_ta_map_id2thr (const td_thragent_t *ta, pthread_t pt, td_thrhandle_t *th) struct _pthread_descr_struct pds; int pthread_threads_max; - LOG (__FUNCTION__); + LOG ("td_ta_map_id2thr"); /* Test whether the TA parameter is ok. */ if (! ta_ok (ta)) @@ -44,7 +45,19 @@ td_ta_map_id2thr (const td_thragent_t *ta, pthread_t pt, td_thrhandle_t *th) /* Test whether this entry is in use. */ if (phc.h_descr == NULL) - return TD_BADTH; + { + if (pt % pthread_threads_max == 0) + { + /* The initial thread always exists but the thread library + might not yet be initialized. */ + th->th_ta_p = (td_thragent_t *) ta; + th->th_unique = NULL; + + return TD_OK; + } + + return TD_BADTH; + } /* Next test: get the descriptor to see whether this is not an old thread handle. */ |