summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-09-01Drop debugging statementsSamuel Thibault
* sysdeps/generic/raise.c (raise): Do not call debug.
2015-09-01Fix raise.c buildSamuel Thibault
* sysdeps/generic/raise.c: Include <pthread.h> instead of non-existing "sig-internal.h"
2015-09-01Remove more unused signals implementationSamuel Thibault
* sysdeps/generic/killpg.c: Remove file. * sysdeps/generic/sigaddset.c: Likewise. * sysdeps/generic/sigdelset.c: Likewise. * sysdeps/generic/sigemptyset.c: Likewise. * sysdeps/generic/sigfillset.c: Likewise. * sysdeps/generic/siginterrupt.c: Likewise. * sysdeps/generic/sigismember.c: Likewise. * sysdeps/generic/signal.c: Likewise. * sysdeps/generic/sigwait.c: Likewise.
2015-05-14Use glibc Makerules to install a relative library symlinkDavid Michael
* Makefile (install-lib): New variable. (install-lib-ldscripts): Remove variable. [IN_GLIBC] ($(inst_libdir)/libpthread.so): Remove rule.
2015-05-07Fix build with glibc < 2.21Samuel Thibault
* pthread/pt-internal.h: Use IS_IN_libpthread instead of IS_IN (libpthread).
2015-05-06Revert "Fix librt link"Samuel Thibault
This reverts commit 8b48173fdc8f52a234ff9d3d1de5277c60d7eea4.
2015-05-06Revert "Stop using IS_IN"Samuel Thibault
This reverts commit 44ae774bed1a75ea926590f1bc7c9f3328219832.
2015-03-23Fix safety of pthread_onceSamuel Thibault
* sysdeps/generic/pt-once.c (__pthread_once): Call __memory_barrier before testing the __run field.
2015-03-22Move headers from generic/ to pthread/Samuel Thibault
So that the glibc makerules can find them instead of using the system ones. * sysdeps/generic/bits/barrier-attr.h: Move to... * sysdeps/pthread/bits/barrier-attr.: ... here. * sysdeps/generic/bits/barrier.h: Move to... * sysdeps/pthread/bits/barrier.: ... here. * sysdeps/generic/bits/cancelation.h: Move to... * sysdeps/pthread/bits/cancelation.: ... here. * sysdeps/generic/bits/condition-attr.h: Move to... * sysdeps/pthread/bits/condition-attr.: ... here. * sysdeps/generic/bits/condition.h: Move to... * sysdeps/pthread/bits/condition.: ... here. * sysdeps/generic/bits/mutex-attr.h: Move to... * sysdeps/pthread/bits/mutex-attr.: ... here. * sysdeps/generic/bits/mutex.h: Move to... * sysdeps/pthread/bits/mutex.: ... here. * sysdeps/generic/bits/once.h: Move to... * sysdeps/pthread/bits/once.: ... here. * sysdeps/generic/bits/pthread-np.h: Move to... * sysdeps/pthread/bits/pthread-np.: ... here. * sysdeps/generic/bits/pthread.h: Move to... * sysdeps/pthread/bits/pthread.: ... here. * sysdeps/generic/bits/pthreadtypes.h: Move to... * sysdeps/pthread/bits/pthreadtypes.: ... here. * sysdeps/generic/bits/rwlock-attr.h: Move to... * sysdeps/pthread/bits/rwlock-attr.: ... here. * sysdeps/generic/bits/rwlock.h: Move to... * sysdeps/pthread/bits/rwlock.: ... here. * sysdeps/generic/bits/semaphore.h: Move to... * sysdeps/pthread/bits/semaphore.: ... here. * sysdeps/generic/bits/thread-attr.h: Move to... * sysdeps/pthread/bits/thread-attr.: ... here. * sysdeps/generic/bits/thread-specific.h: Move to... * sysdeps/pthread/bits/thread-specific.: ... here.
2015-03-22Avoid exposing internals of structuresSamuel Thibault
* sysdeps/generic/bits/barrier-attr.h (__pthread_barrierattr): Rename `pshared' field to `__pshared'. * sysdeps/generic/bits/barrier.h (__pthread_barrier): Rename `lock', `'queue', `pending', `count', `attr', and `data' fields to `__lock', `__queue', `__pending', `__count', `__attr', and `__data'. * sysdeps/generic/bits/cancelation.h (__pthread_cancelation_handler): Rename `handler', `arg', and `next' fields to `__handler', `__arg', and `__next'. * sysdeps/generic/bits/condition-attr.h (__pthread_condattr): Rename `pshared' and `clock' fields to `__pshared', and `__clock'. * sysdeps/generic/bits/mutex-attr.h (__pthread_mutexattr): Rename `prioceiling', `protocol', `pshared', and `mutex_type' fields to `__prioceiling', `__protocol', `__pshared', and `__mutex_type'. * sysdeps/generic/bits/mutex.h (__pthread_mutex): Rename `cthreadscompat1', `attr', `data', `owner', and `locks' fields to `__cthreadscompat1', `__attr', `__data', `__owner', and `__locks'. * sysdeps/generic/bits/once.h (__pthread_once): Rename `run' and `lock' fields to `__run' and `__lock'. * sysdeps/generic/bits/rwlock-attr.h (__pthread_rwlockattr): Rename `psharead' field to `__pshared'. * sysdeps/generic/bits/rwlock.h (__pthread_rwlock): Rename `readers', `readerqueue', and `writerqueue' fields to `__readers', `__readerqueue', and `__writerqueue'. * sysdeps/generic/bits/thread-attr.h (__pthread_contentionscope): Rename `schedparam', `stackaddr', `stacksize', `guardsize', `detachstate', `inheritsched', `contentionscope', and `schedpolicy' fields to `__schedparam', `__stackaddr', `__stacksize', `__guardsize', `__detachstate', `__inheritsched', `__contentionscope', and `__schedpolicy''. * sysdeps/generic/bits/cancelation.h: Update code accordingly. * pthread/pt-create.c: Likewise. * pthread/pt-exit.c: Likewise. * pthread/pt-getattr.c: Likewise. * sysdeps/generic/pt-attr-getdetachstate.c: Likewise. * sysdeps/generic/pt-attr-getguardsize.c: Likewise. * sysdeps/generic/pt-attr-getinheritsched.c: Likewise. * sysdeps/generic/pt-attr-getschedparam.c: Likewise. * sysdeps/generic/pt-attr-getschedpolicy.c: Likewise. * sysdeps/generic/pt-attr-getscope.c: Likewise. * sysdeps/generic/pt-attr-getstackaddr.c: Likewise. * sysdeps/generic/pt-attr-getstacksize.c: Likewise. * sysdeps/generic/pt-attr-setdetachstate.c: Likewise. * sysdeps/generic/pt-attr-setguardsize.c: Likewise. * sysdeps/generic/pt-attr-setinheritsched.c: Likewise. * sysdeps/generic/pt-attr-setschedparam.c: Likewise. * sysdeps/generic/pt-attr-setschedpolicy.c: Likewise. * sysdeps/generic/pt-attr-setscope.c: Likewise. * sysdeps/generic/pt-attr-setstackaddr.c: Likewise. * sysdeps/generic/pt-attr-setstacksize.c: Likewise. * sysdeps/generic/pt-attr.c: Likewise. * sysdeps/generic/pt-barrier-init.c: Likewise. * sysdeps/generic/pt-barrier-wait.c: Likewise. * sysdeps/generic/pt-barrier.c: Likewise. * sysdeps/generic/pt-barrierattr-getpshared.c: Likewise. * sysdeps/generic/pt-barrierattr-setpshared.c: Likewise. * sysdeps/generic/pt-cond-timedwait.c: Likewise. * sysdeps/generic/pt-cond.c: Likewise. * sysdeps/generic/pt-condattr-getclock.c: Likewise. * sysdeps/generic/pt-condattr-getpshared.c: Likewise. * sysdeps/generic/pt-condattr-setclock.c: Likewise. * sysdeps/generic/pt-condattr-setpshared.c: Likewise. * sysdeps/generic/pt-mutex-destroy.c: Likewise. * sysdeps/generic/pt-mutex-init.c: Likewise. * sysdeps/generic/pt-mutex-timedlock.c: Likewise. * sysdeps/generic/pt-mutex-transfer-np.c: Likewise. * sysdeps/generic/pt-mutex-trylock.c: Likewise. * sysdeps/generic/pt-mutex-unlock.c: Likewise. * sysdeps/generic/pt-mutexattr-getprotocol.c: Likewise. * sysdeps/generic/pt-mutexattr-getpshared.c: Likewise. * sysdeps/generic/pt-mutexattr-gettype.c: Likewise. * sysdeps/generic/pt-mutexattr-setprotocol.c: Likewise. * sysdeps/generic/pt-mutexattr-setpshared.c: Likewise. * sysdeps/generic/pt-mutexattr-settype.c: Likewise. * sysdeps/generic/pt-mutexattr.c: Likewise. * sysdeps/generic/pt-once.c: Likewise. * sysdeps/generic/pt-rwlock-attr.c: Likewise. * sysdeps/generic/pt-rwlock-timedrdlock.c: Likewise. * sysdeps/generic/pt-rwlock-timedwrlock.c: Likewise. * sysdeps/generic/pt-rwlock-tryrdlock.c: Likewise. * sysdeps/generic/pt-rwlock-trywrlock.c: Likewise. * sysdeps/generic/pt-rwlock-unlock.c: Likewise. * sysdeps/generic/pt-rwlockattr-getpshared.c: Likewise. * sysdeps/generic/pt-rwlockattr-setpshared.c: Likewise. * sysdeps/mach/hurd/pt-attr-setstackaddr.c: Likewise. * sysdeps/mach/hurd/pt-attr-setstacksize.c: Likewise. * sysdeps/mach/hurd/pt-hurd-cond-timedwait.c: Likewise.
2015-03-22Fix compilation in posix 1995 modeSamuel Thibault
* sysdeps/generic/bits/thread-attr.h: Define __need_size_t macro, include <stddef.h>.
2015-03-22Fix build after 32b1b38Samuel Thibault
* sysdeps/pthread/pthread-functions.h (pthread_functions): Rename ptr_pthread_exit field to ptr___pthread_exit. * pthread/pt-initialize.c (pthread_functions): Likewise.
2015-03-21Silence warningSamuel Thibault
* sysdeps/mach/hurd/pt-hurd-cond-timedwait.c (err): Initialize to 0.
2015-03-21Fix warningSamuel Thibault
* forward.c (pthread_exit): Rename to __pthread_exit. (pthread_exit): New strong alias for __pthread_exit.
2015-03-20Fix librt linkSamuel Thibault
* Makefile (libpthread-routines): Add shm-directory. * Versions (GLIBC_PRIVATE): Add __shm_directory.
2015-03-20Fix reference to ___pthread_initSamuel Thibault
* sysdeps/mach/hurd/pt-sysdep.c (_init_routine): Call ___pthread_init instead of __pthread_init.
2015-03-20Don't hardcode using __libc_stack_endSamuel Thibault
* sysdeps/mach/hurd/pt-sysdep.c (_init_routine): Use `stack' parameter instead of hardcoding __libc_stack_end.
2015-03-08Fix static linking of programs using pthreadSamuel Thibault
The libc-provided lockfile functions must be overriden by the libpthread ones. * sysdeps/pthread/flockfile.c (_IO_flockfile): Make alias weak. * sysdeps/pthread/ftrylockfile.c (_IO_ftrylockfile): Likewise. * sysdeps/pthread/funlockfile.c (_IO_funlockfile): Likewise.
2015-03-08Move pthread-specific lock definitions and declarations to libpthreadSamuel Thibault
* sysdeps/pthread/bits/libc-lockP.h: New file * pthread/pthread-functions.h: Move to... * sysdeps/pthread/pthread-functions.h: ... here.
2015-03-01Forward lockfile calls from libc to dynamically loaded libpthreadSamuel Thibault
* forward.c: (__libc_pthread_functions_init): Add variable (FORWARD2): Use __libc_pthread_functions_init instead of testing __libc_pthread_functions.ptr_##name value. (FORWARD_NORETURN): Add macro. (pthread_exit): Use FORWARD_NORETURN instead of FORWARD2. * libc_pthread_init.c (__libc_pthread_init): Set __libc_pthread_functions_init to 1. * pthread/pthread-functions.h (__pthread_once, __pthread_rwlock_rdlock, __pthread_rwlock_wrlock, __pthread_rwlock_unlock, __pthread_key_create, __pthread_getspecific, __pthread_setspecific, _cthreads_flockfile, _cthreads_funlockfile, _cthreads_ftrylockfile): Add prototypes. (pthread_functions): Add ptr_pthread_once, ptr_pthread_rwlock_rdlock, ptr_pthread_rwlock_wrlock, ptr_pthread_rwlock_unlock, ptr_pthread_key_create, ptr_pthread_getspecific, ptr_pthread_setspecific, ptr__IO_flockfile, ptr__IO_funlockfile, ptr__IO_ftrylockfile. (__libc_pthread_functions_init): Add variable declaration. (PTHFCT_CALL): Add macro. * pthread/pt-initialize.c (pthread_functions): Initialize ptr_pthread_once, ptr_pthread_rwlock_rdlock, ptr_pthread_rwlock_wrlock, pthread_rwlock_unlock, ptr_ptr_pthread_key_create, pthread_getspecific, ptr_pthread_setspecific, ptr_ptr__IO_flockfile, _IO_funlockfile, ptr__IO_ftrylockfile. * sysdeps/generic/pt-once.c (pthread_once): Rename to __pthread_once (pthread_once): Add strong alias. * sysdeps/generic/pt-rwlock-rdlock.c (pthread_rwlock_rdlock): Rename to __pthread_rwlock_rdlock (pthread_rwlock_rdlock): Add strong alias. * sysdeps/generic/pt-rwlock-wrlock.c (pthread_rwlock_wrlock): Rename to __pthread_rwlock_wrlock (pthread_rwlock_wrlock): Add strong alias. * sysdeps/generic/pt-rwlock-unlock.c (pthread_rwlock_unlock): Rename to __pthread_rwlock_unlock (pthread_rwlock_unlock): Add strong alias. * sysdeps/generic/pt-getspecific.c (pthread_getspecific): Rename to __pthread_getspecific (pthread_getspecific): Add strong alias. * sysdeps/generic/pt-setspecific.c (pthread_setspecific): Rename to __pthread_setspecific (pthread_setspecific): Add strong alias. * sysdeps/pthread/flockfile.c: Add file. * sysdeps/pthread/ftrylockfile.c: Add file. * sysdeps/pthread/funlockfile.c: Add file.
2015-02-28Allow libpthread.so to dynamically loaded from a dlopened librarySamuel Thibault
* pthread/pt-internal.h: Include <ldsodefs.h> (_dl_allocate_tls, _dl_deallocate_tls): Remove declarations. * sysdeps/mach/hurd/pt-sysdep.c (init_routine): Rename into _init_routine, add `stack' parameter, return if __pthread_threads is already initialized, pass stack address to __pthread_create_internal if any. (init_routine): New function, calls init_routine with 0 (dynamic_init_routine): New constructor function, calls init_routine with __libc_stack_end.
2015-02-12Update to recent glibcSamuel Thibault
* Makefile [IN_GLIBC] (CPPFLAGS): Do not add -imacros libc-symbols.h. ($(objpfx)libpthread.so): Replace elfobjdir with elf-objpfx.
2015-02-12Rename __pthread_init into ___pthread_initSamuel Thibault
To avoid clashing with the __pthread_init hook. * pthread/pt-initialize.c (__pthread_init): Rename into ___pthread_init. * pthread/pt-internal.h: Likewise. * sysdeps/mach/hurd/pt-sysdep.c: Likewise.
2015-02-12Stop using IS_INSamuel Thibault
* pthread/pt-create.c: Use IS_IN (libpthread) instead of IS_IN_libpthread * pthread/pt-initialize.c: Likewise. * pthread/pt-internal.h: Likewise.
2015-02-12Add missing macroSamuel Thibault
* not-in-libc.h (__thread_terminate_release): New macro.
2014-12-04Fix pthread_create return value on TLS allocation failureSamuel Thibault
* pthread/pt-create.c (__pthread_create_internal): When _dl_allocate_tls returns NULL, set `err' to ENOMEM.
2014-11-02Fix safety of pthread_barrier_waitSamuel Thibault
The barrier queue uses threads' next field, so it can not actually be safely walked without holding the barrier lock. * sysdeps/generic/pt-barrier-wait.c (pthread_barrier_wait): Record an array of __pthread to wake while holding the lock, and wake them only after unlocking it.
2014-11-02Wake up queued threads without spin lock heldSamuel Thibault
so that they may have a chance to actually preempt us. Otherwise they will merely immediately fail to acquire the spin lock, and thus preemption will have served no purpose. * sysdeps/generic/pt-rwlock-unlock.c (pthread_rwlock_unlock): Record an array of __pthread to wake while holding the lock, and wake them only after unlocking it.
2014-11-02Wake up queued threads without spin lock heldSamuel Thibault
so that they may have a chance to actually preempt us. Otherwise they will merely immediately fail to acquire the spin lock, and thus preemption will have served no purpose. * sysdeps/generic/pt-cond-brdcast.c (__pthread_cond_broadcast): Unlock cond->__lock while waking the queued thread.
2014-09-28Fetch stack size from rlimitSamuel Thibault
* pthread/pt-create.c: Include <hurd/resource.h> (__pthread_create_internal): When `attr''s stacksize is 0, try to get the desired size from the RLIMIT_STACK rlimit before defaulting to PTHREAD_STACK_DEFAULT. * sysdeps/generic/pt-attr.c (__pthread_default_attr): Set stacksize to 0 instead of PTHREAD_STACK_DEFAULT.
2014-08-31Fix stack address computationSamuel Thibault
stackaddr is supposed to be an adressable byte, i.e. not inside the guard size. * pthread/pt-getattr.c (pthread_getattr_np): Take guard size into account when returning the stack bottom address.
2014-08-20Add __pthread_key_create aliasSamuel Thibault
Some versions of std::thread use it to detect the presence of libpthread (don't ask why) * sysdeps/hurd/pt-key-create.c (pthread_key_create): Rename to __pthread_key_create. (pthread_key_create): Define as strong alias of __pthread_key_create. * Versions (libpthread): Add __pthread_key_create.
2014-08-20Fix guard size computationSamuel Thibault
* pthread/pt-create.c (__pthread_create_internal): On thread creation failure, take guard size into account when deallocating the stack. * sysdeps/mach/pt-thread-terminate.c (__pthread_thread_terminate): Take guard size into account when deallocating the stack.
2014-06-02Remove unused signals implementationSamuel Thibault
* signal/README: Remove file. * signal/TODO: Likewise. * signal/kill.c: Likewise. * signal/pt-kill-siginfo-np.c: Likewise. * signal/sig-internal.c: Likewise. * signal/sig-internal.h: Likewise. * signal/sigaction.c: Likewise. * signal/sigaltstack.c: Likewise. * signal/signal-dispatch.c: Likewise. * signal/signal.h: Likewise. * signal/sigpending.c: Likewise. * signal/sigsuspend.c: Likewise. * signal/sigtimedwait.c: Likewise. * signal/sigwaiter.c: Likewise. * signal/sigwaitinfo.c: Likewise.
2014-05-23Fix guardsize computationSamuel Thibault
* pthread/pt-create.c (__pthread_create_internal): Round guardsize up to page size. Fill `guardsize' field of thread structure. * sysdeps/mach/hurd/i386/pt-setup.c (stack_setup): Add guardsize to computation of the top of the stack.
2014-05-02Fix guardsize semanticSamuel Thibault
POSIX says guardsize is in addition to stacksize, not included. * pthread/pt-create.c (__pthread_create_internal): Use setup->guardsize + setup->stacksize as stack allocation size. Do not truncate guardsize to stacksize. * pthread/pt-internal.h (guardsize): Remove comment. * sysdeps/generic/pt-attr-setstacksize.c (pthread_attr_setstacksize): Do not truncate guardsize to stacksize.
2014-04-07Merge branch 'foo'Samuel Thibault
2014-04-07We don't have Hurd TSD any more, drop TODO entrySamuel Thibault
2014-04-04Use only clock_gettime, do not depend on librtSamuel Thibault
clock_gettime is actually provided by libc, not librt, so we don't need the latter, and thus avoid the librt dependency, which would cause initialization issues. * sysdeps/generic/pt-condattr-setclock.c (pthread_condattr_setclock): Use clock_gettime instead of clock_getres to test for clock availability. * Makefile: Do not link against librt.
2014-02-19Make name resolution thread-safeRichard Braun
* pthread/pt-alloc.c (initialize_pthread): Reset resolver state. * pthread/pt-create.c: Include <resolv.h>. (entry_point): Update the __resp TLS variable to point to the resolver state of the current thread. * pthread/pt-internal.h: Define __need_res_state and include <resolv.h>. (struct __pthread): New `res_state' member.
2014-01-22Fix up the main thread TCBRichard Braun
Unlike other threads, the TCB of the main thread is created by the C library before libpthread is initialized and needs special care. * sysdeps/mach/hurd/i386/pt-setup.c (__pthread_setup): Set the `self' member of the main thread TCB.
2014-01-22Fix thread destructionRichard Braun
Releasing a thread reference uses a mutex, which means the kernel resources used for synchronization must be available until late during the destruction process. For simplicity, merge __pthread_thread_dealloc into __pthread_thread_terminate. * Makefile (libpthread-routines): Remove pt-thread-dealloc. * pthread/pt-create.c (__pthread_create_internal): Remove call to __pthread_thread_dealloc. * pthread/pt-exit.c (__pthread_exit): Likewise. * pthread/pt-internal.h (__pthread_thread_dealloc): Remove declaration. (__pthread_thread_terminate): Update description. * sysdeps/mach/pt-thread-dealloc.c: Remove file. * sysdeps/mach/pt-thread-terminate.c (__pthread_thread_terminate): Destroy the wake up port.
2014-01-02Revert "Fix glibc spinlock inclusion"Samuel Thibault
This reverts commit 414e0bbabb6ac7a5cff148b927ec874dff922be1. It's these versions which would end up being installed. Some other way needs to be found, or else we'll have to just duplicate or move the content.
2014-01-02Fix glibc spinlock inclusionSamuel Thibault
Using an i386 Implies would change inclusion order in the rest of libc too, entailing a lot of issues. We can simply make mach/i386 include i386 instead. * sysdeps/mach/i386/bits/spin-lock-inline.h: Include ../../../sysdeps/i386/bits/spin-lock-inline.h. * sysdeps/mach/i386/bits/spin-lock.h: Include ../../../sysdeps/i386/bits/spin-lock.h.
2014-01-02add FIXME commentSamuel Thibault
2014-01-01Revert "Add missing dependency to get i386 spinlocks"Samuel Thibault
This reverts commit 40376cfa5d8bd4814b29b777a7d0a6b2b6ed2a7c.
2014-01-01Add missing dependency to get i386 spinlocksSamuel Thibault
* sysdeps/mach/hurd/i386/Implies: Add i386.
2014-01-01Merge branch 'tmp'Samuel Thibault
2014-01-01Add warnings about non-implemented functions.Samuel Thibault
* sysdeps/generic/pt-getcpuclockid.c (pthread_getcpuclockid): Add warning stub. * sysdeps/generic/pt-getschedparam.c (pthread_getschedparam): Likewise. * sysdeps/generic/pt-key-create.c (pthread_key_create): Likewise. * sysdeps/generic/pt-key-delete.c (pthread_key_delete): Likewise. * sysdeps/generic/pt-mutex-getprioceiling.c (pthread_mutex_getprioceiling): Likewise. * sysdeps/generic/pt-mutex-setprioceiling.c (pthread_mutex_setprioceiling): Likewise. * sysdeps/generic/pt-mutexattr-getprioceiling.c (pthread_mutexattr_getprioceiling): Likewise. * sysdeps/generic/pt-mutexattr-setprioceiling.c (pthread_mutexattr_setprioceiling): Likewise. * sysdeps/generic/pt-setschedparam.c (pthread_setschedparam): Likewise. * sysdeps/generic/pt-setschedprio.c (pthread_setschedprio): Likewise.
2014-01-01Add compatibility with kernels without __thread_terminate_releaseSamuel Thibault
This would leak, but at least let the user reboot nicely into a newer kernel. * sysdeps/mach/pt-thread-terminate.c (__pthread_thread_terminate): If __thread_terminate_release returns, use __thread_terminate to terminate the thread anyway.