summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2015-03-08 11:20:46 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2015-03-08 11:20:46 +0100
commit091087f1339f7ca31d351143385cc8e127ca4257 (patch)
treeabc7a8795b25e114f25b5a48ba82a3e41f5c5be7
parent6a266915d717fd7009cb4ec849d45f2bc8a0c73a (diff)
Move pthread-specific definitions and declarations to libpthread
-rw-r--r--.topmsg15
-rw-r--r--sysdeps/mach/hurd/bits/libc-lock.h136
2 files changed, 6 insertions, 145 deletions
diff --git a/.topmsg b/.topmsg
index 69aab0d2db..00f0329520 100644
--- a/.topmsg
+++ b/.topmsg
@@ -1,18 +1,7 @@
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
Subject: [PATCH] hurd: Make libc able to call pthread stubs
-* sysdeps/mach/hurd/bits/libc-lock.h: Include
-<pthread/pthread-functions.h>
-(__libc_maybe_call, PTFAVAIL, __libc_ptf_call, __libc_ptf_call_always):
-New macros.
-(__pthread_mutex_init, __pthread_mutex_destroy, __pthread_mutex_trylock,
-__pthread_mutex_lock, __pthread_mutex_unlock, __pthread_mutexattr_init,
-__pthread_mutexattr_destroy, __pthread_mutexattr_settype,
-__pthread_rwlock_init, __pthread_rwlock_destroy,
-__pthread_rwlock_rdlock, __pthread_rwlock_tryrdlock,
-__pthread_rwlock_wrlock, __pthread_rwlock_trywrlock,
-__pthread_rwlock_unlock, __pthread_key_create, __pthread_setspecific,
-__pthread_getspecific, __pthread_once, __pthread_atfork): New
-declarations and weak references.
+* sysdeps/mach/hurd/bits/libc-lock.h [_LIBC]: Include
+<bits/libc-lockP.h>
Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
diff --git a/sysdeps/mach/hurd/bits/libc-lock.h b/sysdeps/mach/hurd/bits/libc-lock.h
index 38befc9162..98be417b90 100644
--- a/sysdeps/mach/hurd/bits/libc-lock.h
+++ b/sysdeps/mach/hurd/bits/libc-lock.h
@@ -24,7 +24,6 @@
#include <tls.h>
#endif
#include <cthreads.h>
-#include <pthread/pthread-functions.h>
typedef struct mutex __libc_lock_t;
typedef struct
@@ -47,35 +46,6 @@ typedef struct __libc_lock_opaque__ __libc_lock_t;
typedef struct __libc_lock_recursive_opaque__ __libc_lock_recursive_t;
#endif
-/* If we check for a weakly referenced symbol and then perform a
- normal jump to it te code generated for some platforms in case of
- PIC is unnecessarily slow. What would happen is that the function
- is first referenced as data and then it is called indirectly
- through the PLT. We can make this a direct jump. */
-#ifdef __PIC__
-# define __libc_maybe_call(FUNC, ARGS, ELSE) \
- (__extension__ ({ __typeof (FUNC) *_fn = (FUNC); \
- _fn != NULL ? (*_fn) ARGS : ELSE; }))
-#else
-# define __libc_maybe_call(FUNC, ARGS, ELSE) \
- (FUNC != NULL ? FUNC ARGS : ELSE)
-#endif
-
-/* Call thread functions through the function pointer table. */
-#if defined SHARED && !defined NOT_IN_libc
-# define PTFAVAIL(NAME) __libc_pthread_functions_init
-# define __libc_ptf_call(FUNC, ARGS, ELSE) \
- (__libc_pthread_functions_init ? PTHFCT_CALL (ptr_##FUNC, ARGS) : ELSE)
-# define __libc_ptf_call_always(FUNC, ARGS) \
- PTHFCT_CALL (ptr_##FUNC, ARGS)
-#else
-# define PTFAVAIL(NAME) (NAME != NULL)
-# define __libc_ptf_call(FUNC, ARGS, ELSE) \
- __libc_maybe_call (FUNC, ARGS, ELSE)
-# define __libc_ptf_call_always(FUNC, ARGS) \
- FUNC ARGS
-#endif
-
/* Define a lock variable NAME with storage class CLASS. The lock must be
initialized with __libc_lock_init before it can be used (or define it
with __libc_lock_define_initialized, below). Use `extern' for CLASS to
@@ -240,108 +210,10 @@ void *__libc_getspecific (__libc_key_t key);
#endif /* _CTHREADS_ */
-/* Functions that are used by this file and are internal to the GNU C
- library. */
-
-extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
- const pthread_mutexattr_t *__mutex_attr);
-
-extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
-
-extern int __pthread_mutex_trylock (pthread_mutex_t *__mutex);
-
-extern int __pthread_mutex_lock (pthread_mutex_t *__mutex);
-
-extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex);
-
-extern int __pthread_mutexattr_init (pthread_mutexattr_t *__attr);
-
-extern int __pthread_mutexattr_destroy (pthread_mutexattr_t *__attr);
-
-extern int __pthread_mutexattr_settype (pthread_mutexattr_t *__attr,
- int __kind);
-
-extern int __pthread_rwlock_init (pthread_rwlock_t *__rwlock,
- const pthread_rwlockattr_t *__attr);
-
-extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock);
-
-extern int __pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock);
-
-extern int __pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock);
-
-extern int __pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock);
-
-extern int __pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock);
-
-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_setspecific (pthread_key_t __key,
- const void *__pointer);
-
-extern void *__pthread_getspecific (pthread_key_t __key);
-
-extern int __pthread_once (pthread_once_t *__once_control,
- void (*__init_routine) (void));
-
-extern int __pthread_atfork (void (*__prepare) (void),
- void (*__parent) (void),
- void (*__child) (void));
-
-
-
-/* Make the pthread functions weak so that we can elide them from
- single-threaded processes. */
-#ifndef __NO_WEAK_PTHREAD_ALIASES
-# ifdef weak_extern
-weak_extern (__pthread_mutex_init)
-weak_extern (__pthread_mutex_destroy)
-weak_extern (__pthread_mutex_lock)
-weak_extern (__pthread_mutex_trylock)
-weak_extern (__pthread_mutex_unlock)
-weak_extern (__pthread_mutexattr_init)
-weak_extern (__pthread_mutexattr_destroy)
-weak_extern (__pthread_mutexattr_settype)
-weak_extern (__pthread_rwlock_init)
-weak_extern (__pthread_rwlock_destroy)
-weak_extern (__pthread_rwlock_rdlock)
-weak_extern (__pthread_rwlock_tryrdlock)
-weak_extern (__pthread_rwlock_wrlock)
-weak_extern (__pthread_rwlock_trywrlock)
-weak_extern (__pthread_rwlock_unlock)
-weak_extern (__pthread_key_create)
-weak_extern (__pthread_setspecific)
-weak_extern (__pthread_getspecific)
-weak_extern (__pthread_once)
-weak_extern (__pthread_initialize)
-weak_extern (__pthread_atfork)
-weak_extern (pthread_setcancelstate)
-# else
-# pragma weak __pthread_mutex_init
-# pragma weak __pthread_mutex_destroy
-# pragma weak __pthread_mutex_lock
-# pragma weak __pthread_mutex_trylock
-# pragma weak __pthread_mutex_unlock
-# pragma weak __pthread_mutexattr_init
-# pragma weak __pthread_mutexattr_destroy
-# pragma weak __pthread_mutexattr_settype
-# pragma weak __pthread_rwlock_destroy
-# pragma weak __pthread_rwlock_rdlock
-# pragma weak __pthread_rwlock_tryrdlock
-# pragma weak __pthread_rwlock_wrlock
-# pragma weak __pthread_rwlock_trywrlock
-# pragma weak __pthread_rwlock_unlock
-# pragma weak __pthread_key_create
-# pragma weak __pthread_setspecific
-# pragma weak __pthread_getspecific
-# pragma weak __pthread_once
-# pragma weak __pthread_initialize
-# pragma weak __pthread_atfork
-# pragma weak pthread_setcancelstate
-# endif
+/* Hide the definitions which are only supposed to be used inside libc in
+ a separate file. This file is not present in the installation! */
+#ifdef _LIBC
+# include <bits/libc-lockP.h>
#endif
#endif /* bits/libc-lock.h */