diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-04-21 23:15:55 +0000 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-04-21 23:15:55 +0000 |
commit | c310aa40efd3b2d954354e0550b1bbb6a8e7e349 (patch) | |
tree | 5d1bea630f01a194eaec72cc13485bf24cce310b /pthread/pt-initialize.c | |
parent | d21d530170abcaec33ba272b11cb6615eb2804de (diff) |
Add glibc build support
* Makeconfig, Versions, configure.in, forward.c, libc_pthread_init.c,
pthread/pthread-functions.h, shlib-versions, sysdeps/i386/Implies,
sysdeps/mach/hurd/Implies, sysdeps/mach/hurd/i386/Implies: New files.
* Makefile: Add glibc rules, enabled when IN_GLIBC is defined to yes, when
$(..) is defined.
* pthread/pt-initialize.c [IS_IN_libpthread] (pthread_functions): New variable.
[IS_IN_libpthread] (__pthread_initialize): Call __libc_pthread_init.
Diffstat (limited to 'pthread/pt-initialize.c')
-rw-r--r-- | pthread/pt-initialize.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/pthread/pt-initialize.c b/pthread/pt-initialize.c index cf32b8b..f0ef8f8 100644 --- a/pthread/pt-initialize.c +++ b/pthread/pt-initialize.c @@ -23,11 +23,61 @@ #include <pt-internal.h> #include <set-hooks.h> +#include <pthread.h> +#include <pthread-functions.h> + 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, + .ptr_pthread_attr_init = __pthread_attr_init, + .ptr_pthread_attr_getdetachstate = __pthread_attr_getdetachstate, + .ptr_pthread_attr_setdetachstate = __pthread_attr_setdetachstate, + .ptr_pthread_attr_getinheritsched = __pthread_attr_getinheritsched, + .ptr_pthread_attr_setinheritsched = __pthread_attr_setinheritsched, + .ptr_pthread_attr_getschedparam = __pthread_attr_getschedparam, + .ptr_pthread_attr_setschedparam = __pthread_attr_setschedparam, + .ptr_pthread_attr_getschedpolicy = __pthread_attr_getschedpolicy, + .ptr_pthread_attr_setschedpolicy = __pthread_attr_setschedpolicy, + .ptr_pthread_attr_getscope = __pthread_attr_getscope, + .ptr_pthread_attr_setscope = __pthread_attr_setscope, + .ptr_pthread_condattr_destroy = __pthread_condattr_destroy, + .ptr_pthread_condattr_init = __pthread_condattr_init, + .ptr_pthread_cond_broadcast = __pthread_cond_broadcast, + .ptr_pthread_cond_destroy = __pthread_cond_destroy, + .ptr_pthread_cond_init = __pthread_cond_init, + .ptr_pthread_cond_signal = __pthread_cond_signal, + .ptr_pthread_cond_wait = __pthread_cond_wait, + .ptr_pthread_cond_timedwait = __pthread_cond_timedwait, + .ptr_pthread_equal = __pthread_equal, + .ptr_pthread_exit = __pthread_exit, + .ptr_pthread_getschedparam = __pthread_getschedparam, + .ptr_pthread_setschedparam = __pthread_setschedparam, + .ptr_pthread_mutex_destroy = _pthread_mutex_destroy, + .ptr_pthread_mutex_init = _pthread_mutex_init, + .ptr_pthread_mutex_lock = __pthread_mutex_lock, + .ptr_pthread_mutex_trylock = __pthread_mutex_trylock, + .ptr_pthread_mutex_unlock = __pthread_mutex_unlock, + .ptr_pthread_self = __pthread_self, + .ptr_pthread_setcancelstate = __pthread_setcancelstate, + .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. */ void __pthread_initialize (void) { +#ifdef IS_IN_libpthread + __libc_pthread_init(ptr_pthread_functions); +#endif RUN_HOOK (__pthread_init, ()); } |