summaryrefslogtreecommitdiff
path: root/pthread
diff options
context:
space:
mode:
Diffstat (limited to 'pthread')
-rw-r--r--pthread/pt-create.c6
-rw-r--r--pthread/pt-initialize.c7
-rw-r--r--pthread/pt-internal.h3
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);