diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-04-27 20:18:02 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-04-27 20:18:02 +0000 |
commit | 3300816c38721bcddbbeb92de7fe44b90454bce6 (patch) | |
tree | cd35fe7dc0799f565c04122cc63054d4790d9041 /linuxthreads/pthread.c | |
parent | 78477e4843c34f2ad54d25975758c3342746d0cd (diff) | |
download | glibc-3300816c38721bcddbbeb92de7fe44b90454bce6.zip glibc-3300816c38721bcddbbeb92de7fe44b90454bce6.tar.gz glibc-3300816c38721bcddbbeb92de7fe44b90454bce6.tar.bz2 |
Update.
2000-04-27 Ulrich Drepper <drepper@redhat.com>
* elf/soinit.c (__libc_global_ctors): Call __pthread_initialize_minimal
if this function is available.
* sysdeps/i386/i486/atomicity.h (exchange_and_add): Use uint32_t for
all values.
<haible@clisp.cons.org>.
Diffstat (limited to 'linuxthreads/pthread.c')
-rw-r--r-- | linuxthreads/pthread.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c index 7370420..a78e0c9 100644 --- a/linuxthreads/pthread.c +++ b/linuxthreads/pthread.c @@ -310,6 +310,23 @@ static void pthread_initialize(void) __attribute__((constructor)); extern void *__dso_handle __attribute__ ((weak)); + +/* Do some minimal initialization which has to be done during the + startup of the C library. */ +void +__pthread_initialize_minimal(void) +{ + /* The errno/h_errno variable of the main thread are the global ones. */ + __pthread_initial_thread.p_errnop = &_errno; + __pthread_initial_thread.p_h_errnop = &_h_errno; + /* If we have special thread_self processing, initialize that for the + main thread now. */ +#ifdef INIT_THREAD_SELF + INIT_THREAD_SELF(&__pthread_initial_thread, 0); +#endif +} + + static void pthread_initialize(void) { struct sigaction sa; @@ -330,14 +347,6 @@ static void pthread_initialize(void) (char *)(((long)CURRENT_STACK_FRAME - 2 * STACK_SIZE) & ~(STACK_SIZE - 1)); /* Update the descriptor for the initial thread. */ __pthread_initial_thread.p_pid = __getpid(); - /* If we have special thread_self processing, initialize that for the - main thread now. */ -#ifdef INIT_THREAD_SELF - INIT_THREAD_SELF(&__pthread_initial_thread, 0); -#endif - /* The errno/h_errno variable of the main thread are the global ones. */ - __pthread_initial_thread.p_errnop = &_errno; - __pthread_initial_thread.p_h_errnop = &_h_errno; /* Play with the stack size limit to make sure that no stack ever grows beyond STACK_SIZE minus one page (to act as a guard page). */ getrlimit(RLIMIT_STACK, &limit); |