diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-05-25 02:33:13 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-05-25 02:33:13 +0200 |
commit | b428baaa85c0adca9ef4884c637f289a0ab5e2d6 (patch) | |
tree | 2b886760ce40712db7282a83dcc3957bacabd42b /pthread | |
parent | 1dc7553d93bf7f48b5f767b74eab607142d77160 (diff) | |
parent | 25260994c812050a5d7addf125cdc90c911ca5c1 (diff) |
Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/libpthread
Diffstat (limited to 'pthread')
-rw-r--r-- | pthread/pt-create.c | 6 | ||||
-rw-r--r-- | pthread/pt-initialize.c | 7 | ||||
-rw-r--r-- | pthread/pt-internal.h | 3 |
3 files changed, 8 insertions, 8 deletions
diff --git a/pthread/pt-create.c b/pthread/pt-create.c index ca6b66c..4d81a95 100644 --- a/pthread/pt-create.c +++ b/pthread/pt-create.c @@ -38,8 +38,12 @@ __atomic_t __pthread_total; /* The entry-point for new threads. */ static void -entry_point (void *(*start_routine)(void *), void *arg) +entry_point (struct __pthread *self, void *(*start_routine)(void *), void *arg) { +#ifdef ENABLE_TLS + ___pthread_self = self; +#endif + #ifdef HAVE_USELOCALE /* A fresh thread needs to be bound to the global locale. */ uselocale (LC_GLOBAL_LOCALE); diff --git a/pthread/pt-initialize.c b/pthread/pt-initialize.c index 39f1aed..831a63d 100644 --- a/pthread/pt-initialize.c +++ b/pthread/pt-initialize.c @@ -29,7 +29,6 @@ DEFINE_HOOK (__pthread_init, (void)); #ifdef IS_IN_libpthread -#ifdef SHARED static const struct pthread_functions pthread_functions = { .ptr_pthread_attr_destroy = __pthread_attr_destroy, @@ -66,10 +65,6 @@ static const struct pthread_functions pthread_functions = .ptr_pthread_setcanceltype = __pthread_setcanceltype, .ptr___pthread_get_cleanup_stack = __pthread_get_cleanup_stack, }; -# define ptr_pthread_functions &pthread_functions -#else -# define ptr_pthread_functions NULL -#endif #endif /* IS_IN_libpthread */ /* Initialize the pthreads library. */ @@ -77,7 +72,7 @@ void __pthread_init (void) { #ifdef IS_IN_libpthread - __libc_pthread_init(ptr_pthread_functions); + __libc_pthread_init(&pthread_functions); #endif RUN_HOOK (__pthread_init, ()); } diff --git a/pthread/pt-internal.h b/pthread/pt-internal.h index a1da377..f5766e9 100644 --- a/pthread/pt-internal.h +++ b/pthread/pt-internal.h @@ -217,7 +217,8 @@ extern void __pthread_stack_dealloc (void *stackaddr, size_t stacksize); /* Setup thread THREAD's context. */ extern int __pthread_setup (struct __pthread *__restrict thread, - void (*entry_point)(void *(*)(void *), + void (*entry_point)(struct __pthread *, + void *(*)(void *), void *), void *(*start_routine)(void *), void *__restrict arg); |