htl: Add internal versions of functions used by C11 threads
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 12 Jan 2020 23:47:19 +0000 (00:47 +0100)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 12 Jan 2020 23:48:47 +0000 (00:48 +0100)
The C11 threads implementation needs to call pthread_join and
pthread_key_delete without exposing them.

htl/pt-join.c
sysdeps/htl/libc-lockP.h
sysdeps/htl/pt-key-delete.c
sysdeps/htl/pthreadP.h

index 158c328..b141c4c 100644 (file)
@@ -27,7 +27,7 @@
 /* Make calling thread wait for termination of thread THREAD.  Return
    the exit status of the thread in *STATUS.  */
 int
-pthread_join (pthread_t thread, void **status)
+__pthread_join (pthread_t thread, void **status)
 {
   struct __pthread *pthread;
   int err = 0;
@@ -75,3 +75,4 @@ pthread_join (pthread_t thread, void **status)
 
   return err;
 }
+strong_alias (__pthread_join, pthread_join);
index 4b03502..4ba3930 100644 (file)
@@ -112,6 +112,8 @@ extern int __pthread_rwlock_unlock (pthread_rwlock_t *__rwlock);
 extern int __pthread_key_create (pthread_key_t *__key,
                                 void (*__destr_function) (void *));
 
+extern int __pthread_key_delete (pthread_key_t __key);
+
 extern int __pthread_setspecific (pthread_key_t __key,
                                  const void *__pointer);
 
index 9b3fd90..2f8aae1 100644 (file)
@@ -21,7 +21,7 @@
 #include <pt-internal.h>
 
 int
-pthread_key_delete (pthread_key_t key)
+__pthread_key_delete (pthread_key_t key)
 {
   error_t err = 0;
 
@@ -61,3 +61,4 @@ pthread_key_delete (pthread_key_t key)
 
   return err;
 }
+strong_alias (__pthread_key_delete, pthread_key_delete)
index 47fd3af..30e074c 100644 (file)
@@ -45,6 +45,7 @@ int __pthread_create (pthread_t *newthread,
 void __cthread_detach (__cthread_t);
 int __pthread_detach (pthread_t __threadp);
 void __pthread_exit (void *value) __attribute__ ((__noreturn__));
+int __pthread_join (pthread_t, void **);
 int __cthread_keycreate (__cthread_key_t *);
 int __cthread_getspecific (__cthread_key_t, void **);
 int __cthread_setspecific (__cthread_key_t, void *);