summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2013-12-29Revert "Allow applications to set the default stack size"Richard Braun
This reverts commit 536420a581f9f822cdef0fc460b5176a840f49e5. Now that threadvars have been replaced with TLS, this hack is no longer needed.
2013-12-26Implement thread destructionRichard Braun
This change makes libpthread release almost every resource allocated for a thread, including the kernel thread, its send right, its reply port and its stack. This improves resource usage after peaks of activity during which servers can create hundreds or even thousands of threads. To achieve this, the library relies on the recently added thread_terminate_release one-way GNU Mach RPC, which allows threads to release their last resources along with terminating in a single operation. The pthread_exit function unconditionally releases all the resources it can, including other kernel objects (namely the port used for blocking and waking up) and signal states. When releasing the pthread structure, a reference counter is used so that joinable threads remain available. Once the reference counter drops to 0, the pthread structure can be recycled. Thread local storage (TLS) is also recycled since it needs to remain allocated while terminating the thread, as it is there that the reply port is stored. TLS could be released too, after grabbing the reply port name, but it is difficult to make sure no RPC involving a reply port is used afterwards, so the simpler solution of recycling TLS was chosen. * Makefile (libpthread-routines): Replace pt-thread-halt with pt-thread-terminate. * pthread/pt-alloc.c (initialize_pthread): Set reference counter and unconditionally initialize new threads completely. (__pthread_alloc): Remove call to __pthread_thread_halt, update calls to initialize_pthread. * pthread/pt-create.c (__pthread_create_internal): Don't attempt to reuse stacks, handle reference counter, update failure handling. * pthread/pt-dealloc.c: Include bits/pt-atomic.h. (__pthread_dealloc): Make pthread structure available for reuse when reference counter reaches 0. * pthread/pt-detach.c (pthread_detach): Assume the target thread takes care of its own resources and, as a result, simply unreference its pthread struct. * pthread/pt-exit.c (__pthread_exit): Release resources and terminate. * pthread/pt-internal.h (struct __pthread): New `nr_refs' member. (__pthread_alloc): Update description. (__pthread_dealloc): Likewise. (__pthread_thread_dealloc): Likewise. (__pthread_thread_terminate): New declaration. * pthread/pt-join.c (pthread_join): Assume the target thread takes care of its own resources and, as a result, simply unreference its pthread struct. * sysdeps/mach/hurd/pt-sigstate-destroy.c (__pthread_sigstate_destroy): Call _hurd_sigstate_delete. * sysdeps/mach/hurd/pt-sigstate-init.c (__pthread_sigstate_init): Call _hurd_thread_sigstate and _hurd_sigstate_set_global_rcv when appropriate. * sysdeps/mach/hurd/pt-sysdep.c (__pthread_create_internal): Prevent the library from releasing the stack of the main thread. * sysdeps/mach/hurd/pt-sysdep.h (PTHREAD_SYSDEP_MEMBERS): Remove `have_kernel_resources' from the list of sysdep members. * sysdeps/mach/pt-thread-alloc.c (__pthread_thread_alloc): Update thread allocation. * sysdeps/mach/pt-thread-dealloc.c (__pthread_thread_dealloc): Update description. * sysdeps/mach/pt-thread-halt.c: Remove file. * sysdeps/mach/pt-thread-start.c (__pthread_thread_start): Fix the conditions under which a thread should actually be started. * sysdeps/mach/pt-thread-terminate.c: New file.
2013-11-01Let libc get sigthread stack layout in static buildsSamuel Thibault
Libc only uses a weak reference, we need a stronger reference to get the symbol from libpthread2.a * libpthread.a (pthread_getattr_np, pthread_attr_getstack): Add references. * libpthread_pic.a (pthread_getattr_np, pthread_attr_getstack): Likewise.
2013-10-24Really use user-provided stackSamuel Thibault
* pthread/pt-create.c (__pthread_create_internal): When the user provides a `stackaddr`, use it instead of allocating a stack. * pthread/pt-detach.c (pthread_detach): Only deallocate the stack when it was allocated by libpthread. * pthread/pt-join.c (pthread_join): Likewise.
2013-10-20Drop threadvars entirelySamuel Thibault
2013-10-20Use function parameter instead of global variableSamuel Thibault
* sysdeps/mach/pt-stack-alloc.c(__pthread_stack_alloc): Use `stacksize` parameter instead of `__pthread_stacksize` global variable.
2013-10-16Delay TLS deallocation outside thread terminationSamuel Thibault
Since libc functions used up to actual thread termination (including the termination RPC itself) are to use TLS. * pthread/pt-alloc.c (initialize_pthread): Set `tcb` field of `new` to NULL. (__pthread_alloc): Deallocate TLS of to-be-reused `new` thread. * pthread/pt-create.c (__pthread_create_internal): Reset `tcb` field to NULL after deallocation. * pthread/pt-exit.c (__pthread_exit): Do not deallocate TLS.
2013-09-21Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/libpthreadSamuel Thibault
2013-09-21Add pthread_atfork supportSamuel Thibault
* Versions (libc): Add __register_atfork with GLIBC_PRIVATE version. * forward.c: Include <errno.h> (atfork): New structure. (atfork_lock): New mutex. (fork_handlers, fork_last_handler): New variables. (atfork_pthread_prepare, atfork_pthread_parent, atfork_pthread_child): New atfork hooks (__register_atfork): New function. * sysdeps/generic/pt-atfork.c (pthread_atfork): Call __register_atfork.
2013-06-29Fix a subtle thread creation bugRichard Braun
* pthread/pt-create.c (__pthread_create_internal): Store pthread ID in caller-provided memory before starting the new thread.
2013-06-11Initialize ctypeSamuel Thibault
* pthread/pt-create.c (entry_point) [IS_IN_libpthread]: Call __ctype_init.
2013-02-15Add pthread_hurd_cond_timedwait_npRichard Braun
This new Hurd-specific function is meant to allow Hurd servers to wait for events during a bounded period of time. * Makefile (libpthread-routines): Add pt-hurd-cond-timedwait. * Versions: Include pthread_hurd_cond_timedwait_np in version GLIBC_2.17 of libpthread. * sysdeps/mach/hurd/bits/pthread-np.h (pthread_hurd_cond_timedwait_np): New declaration. * sysdeps/mach/hurd/pt-hurd-cond-timedwait.c: New file that provides __pthread_hurd_cond_timedwait_internal and __pthread_hurd_cond_timedwait_np. * sysdeps/mach/hurd/pt-hurd-cond-wait.c (__pthread_hurd_cond_wait_np): Rewrite as a call to __pthread_hurd_cond_timedwait_internal with no timeout.
2013-02-04Fix pthread timeout handling and cancellation issuesRichard Braun
This patch solves two issues. The first one is cancellation handling when a cancellation request is sent before reaching a cancellation point (namely, pthread_cond_{timed,}wait). Cancellation is implemented by pushing an appropriate cleanup handler and switching to PTHREAD_CANCEL_ASYNCHRONOUS type. The main problem is that it doesn't handle pending requests, only a cancellation that occurs while blocking. Other problems occur when trying to correctly handle a timeout and a cancellation request through the cleanup routine. The other issue is correctly handling timeouts. This problem was already well known, as explained by the following comment : "FIXME: What do we do if we get a wakeup message before we disconnect ourself? It may remain until the next time we block." In addition, the prevp thread member is inconsistently used. It is sometimes accessed while protected by the appropriate queue lock to determine whether a thread is still queued, while at times, threads are unqueued without holding a lock, as in pthread_cond_broadcast : /* We can safely walk the list of waiting threads without holding the lock since it is now decoupled from the condition. */ __pthread_dequeuing_iterate (wakeup, wakeup) __pthread_wakeup (wakeup); This is the root cause that triggers some assertion failures. The solution brought by this patch is to consistently use the prevp link to determine if both a thread has been unqueued and if a wakeup message has been sent (both are needed to wake up a thread). A thread unblocked because of a timeout can now accurately determine if it needs to drain its message queue. A direct improvement is that the message queue size can be limited to one message, and wakeups are guaranteed to be non-blocking, which allows safely calling __pthread_wakeup from critical sections. As it now affects the cleanup cancellation routine of __pthread_cond_timedwait_internal, cancellation is reworked as well. Cancellation type is forced to PTHREAD_CANCEL_DEFERRED during the call, and actually checked on both entry and return. A hook is set by the blocking thread so that the waker doesn't need to know about the call implementation. Cancellation members are now protected with a mutex for truely safe access. * pthread/pt-alloc.c (initialize_pthread): Initialize the new `cancel_lock', `cancel_hook' and `cancel_hook_args' fields. * pthread/pt-cancel.c (pthread_cancel): Rework cancellation handling. * pthread/pt-internal.h (struct __pthread): Add `cancel_lock', `cancel_hook' and `cancel_hook_args' fields. (__pthread_dequeue): Assert thread->prevp isn't NULL. * pthread/pt-join.c (pthread_join): Describe how the cancellation point is implemented. * pthread/pt-setcancelstate.c (__pthread_setcancelstate): Lock the given thread cancellation lock when switching state. * pthread/pt-setcanceltype.c (__pthread_setcanceltype): Likewise for cancellation type. * pthread/pt-testcancel.c (pthread_testcancel): Likewise for pending cancellations. * sysdeps/generic/pt-cond-brdcast.c (__pthread_cond_broadcast): Dequeue and wake up threads with condition locked. * sysdeps/generic/pt-cond-signal.c (cond_signal): Remove function, move implementation to ... (__pthread_cond_signal): ... this function. Remove unused `unblocked' variable. * sysdeps/generic/pt-cond-timedwait.c (struct cancel_ctx): New structure. (cancel_hook): New static function. (__pthread_cond_timedwait_internal): Fix cancellation and timeout handling. * sysdeps/generic/pt-mutex-timedlock.c (__pthread_mutex_timedlock_internal): Fix timeout handling. * sysdeps/generic/pt-rwlock-timedrdlock.c (__pthread_rwlock_timedrdlock_internal): Likewise. * sysdeps/generic/pt-rwlock-timedwrlock.c (__pthread_rwlock_timedwrlock_internal): Likewise. * sysdeps/generic/pt-rwlock-unlock.c (pthread_rwlock_unlock): Dequeue and wake up threads with rwlock internal lock held. * sysdeps/generic/sem-timedwait.c (__sem_timedwait_internal): Fix timeout handling. * sysdeps/mach/hurd/pt-docancel.c (__pthread_do_cancel): Unlock the given thread cancellation lock. * sysdeps/mach/pt-thread-alloc.c (create_wakeupmsg): Limit the message queue size of the wakeup port to 1. * sysdeps/mach/pt-wakeup.c (__pthread_wakeup): Call __mach_msg in a non-blocking way.
2013-01-25New Makefile snippet for the "pthread" sysdepPino Toscano
Hook the libpthread version when compiling glibc's confstr.c, so that confstr can show it. * sysdeps/pthread/Makefile: New file.
2013-01-25Require the "pthread" sysdepPino Toscano
This allows the use of glibc sysdeps that use pthread-based implementations. * sysdeps/mach/hurd/Implies: Add pthread.
2013-01-22Fix versions of _IO_flockfile, _IO_ftrylockfile and _IO_funlockfileRichard Braun
* Versions: Include _IO_flockfile, _IO_ftrylockfile and _IO_funlockfile in version 2.2.6 of libpthread.
2012-11-25Fix pthread_hurd_cond_wait_np versionsSamuel Thibault
* Version: Do not include pthread_hurd_cond_wait_np in libc, as we don't define a forward for it. Include pthread_hurd_cond_wait_np in version GLIBC_2.17 of libpthread, as this is a new symbol.
2012-11-25Allow applications to set the default stack sizeRichard Braun
This change is a temporary hack intended for the Hurd servers. Once Hurd threadvars are replaced with TLS, this commit should be reverted. * pthread/pt-internal.h (__pthread_default_attr): Remove const qualifier. * sysdeps/generic/pt-attr.c (__pthread_default_attr): Likewise. * sysdeps/mach/hurd/pt-sysdep.c (__pthread_stack_default_size): New variable. (init_routine): Set __pthread_default_attr.stacksize if __pthread_stack_default_size exists.
2012-11-25Add Hurd-specific condition wait functionRichard Braun
* Makefile (libpthread-routines): Add pt-hurd-cond-wait. * Versions (libc): Add pthread_hurd_cond_wait_np. (libpthread): Likewise. * sysdeps/mach/hurd/bits/pthread-np.h: New file. * sysdeps/mach/hurd/pt-hurd-cond-wait.c: Likewise.
2012-11-24Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/libpthreadSamuel Thibault
2012-11-24Set elf=yes if not defined alreadyPino Toscano
glibc 2.16 dropped support for any binary format other than ELF, and the ELF variable has been removed too; this causes a build failure when built as glibc addon with glibc >= 2.16, since it would not link to ld.so. Defining ELF to 'yes' if not defined allows to retain compatibility with older glibc versions. * Makefile [$(..) != ''] [$(elf) = ''] (elf): Define to 'yes'.
2012-11-13Remove .cvsignore, obsoletePino Toscano
* .cvsignore: Remove file.
2012-09-15Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/libpthreadSamuel Thibault
2012-09-15pthread_create: turn ENOMEM to EAGAINPino Toscano
ENOMEM can be returned if some malloc fail, but it is not a valid POSIX error number for pthread_create; thus turn it to EAGAIN. * pthread/pt-create.c (pthread_create): Turn ENOMEM to EAGAIN.
2012-08-07tests/Makefile: Support INSTALL_ROOT environment variable.Thomas Schwinge
* tests/Makefile [ifdef INSTALL_ROOT] (INSTALL_ROOT_CPPFLAGS) (INSTALL_ROOT_LDFLAGS): New variables. (%.o: %.c, %: %.o): New rules. (%-static: %.o): Update rule. * tests/README: Update.
2012-08-07Rename ia32 sysdep directories to i386.Thomas Schwinge
* sysdeps/i386/Implies: Remove file. * sysdeps/mach/hurd/i386/Implies: Likewise. * sysdeps/ia32/bits/memory.h: Rename to sysdeps/i386/bits/memory.h. * sysdeps/ia32/bits/pt-atomic.h: Rename to sysdeps/i386/bits/pt-atomic.h. * sysdeps/ia32/bits/spin-lock-inline.h: Rename to sysdeps/i386/bits/spin-lock-inline.h. * sysdeps/ia32/bits/spin-lock.h: Rename to sysdeps/i386/bits/spin-lock.h. * sysdeps/ia32/machine-sp.h: Rename to sysdeps/i386/machine-sp.h. * sysdeps/ia32/pt-machdep.h: Rename to sysdeps/i386/pt-machdep.h. * sysdeps/mach/hurd/ia32/pt-machdep.c: Rename to sysdeps/mach/hurd/i386/pt-machdep.c. * sysdeps/mach/hurd/ia32/pt-setup.c: Rename to sysdeps/mach/hurd/i386/pt-setup.c. * Makefile (SYSDEP_PATH): Adapt to that.
2012-08-07Remove PowerPC port.Thomas Schwinge
* sysdeps/powerpc/bits/machine-lock.h: Remove file. * sysdeps/powerpc/bits/memory.h: Likewise. * sysdeps/powerpc/bits/spin-lock.h: Likewise. * sysdeps/powerpc/machine-sp.h: Likewise. * sysdeps/powerpc/pt-machdep.h: Likewise. * TODO: Update.
2012-08-07* signal/README: Add note about accompanying sysdeps/generic/ files.Thomas Schwinge
2012-08-07Remove L4 port.Thomas Schwinge
* Makefile.am: Remove file. * headers.m4: Likewise. * sysdeps/l4/bits/pthread-np.h: Likewise. * sysdeps/l4/hurd/bits/pthread-np.h: Likewise. * sysdeps/l4/hurd/ia32/pt-machdep.c: Likewise. * sysdeps/l4/hurd/ia32/pt-setup.c: Likewise. * sysdeps/l4/hurd/ia32/signal-dispatch-lowlevel.c: Likewise. * sysdeps/l4/hurd/powerpc/pt-machdep.c: Likewise. * sysdeps/l4/hurd/powerpc/pt-setup.c: Likewise. * sysdeps/l4/hurd/pt-block.c: Likewise. * sysdeps/l4/hurd/pt-kill.c: Likewise. * sysdeps/l4/hurd/pt-setactivity-np.c: Likewise. * sysdeps/l4/hurd/pt-sigstate-destroy.c: Likewise. * sysdeps/l4/hurd/pt-sigstate-init.c: Likewise. * sysdeps/l4/hurd/pt-sigstate.c: Likewise. * sysdeps/l4/hurd/pt-startup.c: Likewise. * sysdeps/l4/hurd/pt-sysdep.c: Likewise. * sysdeps/l4/hurd/pt-sysdep.h: Likewise. * sysdeps/l4/hurd/pt-thread-alloc.c: Likewise. * sysdeps/l4/hurd/pt-thread-halt.c: Likewise. * sysdeps/l4/hurd/pt-thread-start.c: Likewise. * sysdeps/l4/hurd/pt-wakeup.c: Likewise. * sysdeps/l4/hurd/sig-sysdep.h: Likewise. * sysdeps/l4/hurd/sigprocmask.c: Likewise. * sysdeps/l4/pt-block.c: Likewise. * sysdeps/l4/pt-docancel.c: Likewise. * sysdeps/l4/pt-pool-np.c: Likewise. * sysdeps/l4/pt-spin.c: Likewise. * sysdeps/l4/pt-stack-alloc.c: Likewise. * sysdeps/l4/pt-thread-alloc.c: Likewise. * sysdeps/l4/pt-thread-dealloc.c: Likewise. * sysdeps/l4/pt-thread-halt.c: Likewise. * sysdeps/l4/pt-thread-start.c: Likewise. * sysdeps/l4/pt-timedblock.c: Likewise. * sysdeps/l4/pt-wakeup.c: Likewise. * TODO: Update. * signal/README: Likewise.
2012-08-07Fix libpthread.so symlinkSamuel Thibault
* Makefile ($(inst_libdir)/libpthread.so): Symlink from absolute path $(slibdir)/libpthread.so$(libpthread.so-version) instead of relative, as both files may not be in the same directory (e.g. in Debian).
2012-08-04Fix typoThomas DiModica
* Makefile (inst_libdir) [!IN_GLIBC]: Set variable to $(libdir) instead of expanding it.
2012-07-08Default to a little guardsizeSamuel Thibault
Later rounded up to a page. * sysdeps/generic/pt-attr.c (__pthread_default_attr) [!PAGESIZE]: Set guardsize field to 1.
2012-07-08Comment on deviation from standardSamuel Thibault
* pthread/pt-internal.h (guardsize): Mention that we depart from the standard which says guardsize is in addition to stacksize.
2012-05-25Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/libpthreadSamuel Thibault
2012-05-25Add -lrt to libpthread.a to fix static linkSamuel Thibault
* libpthread.a (GROUP): Add -lrt.
2012-04-27Store self in __thread variable instead of threadvarSamuel Thibault
* sysdeps/mach/hurd/pt-sysdep.h (_HURD_THREADVAR_THREAD): Remove macro. (___pthread_self): Declare new __thread variable. (_pthread_self): Take self pointer from ___pthread_self instead of threadvar. * sysdeps/mach/hurd/pt-sysdep.c (___pthread_self): Define new __thread variable. (init_routine): Set ___pthread_self to initial thread structure. * pthread/pt-internal.h (__pthread_setup): Add `self' parameter to `entry_point' parameter. * pthread/pt-create.c (entry_point): Add `self' parameter. Store it in ___pthread_self. * sysdeps/l4/hurd/ia32/pt-setup.c (stack_setup): Add `self parameter to `entry_point' parameter. Pass it the `thread' parameter. (__pthread_setup): Likewise. * sysdeps/l4/hurd/powerpc/pt-setup.c (struct start_info): Add `self' field. (first_entry_1): Pass `self' parameter. (stack_setup): Add `self' parameter to `entry_point' parameter, pass it the `thread' parameter. (__pthread_setup): Likewise. * sysdeps/mach/hurd/ia32/pt-setup.c (stack_setup): Pass `thread' parameter to the start routine. (stack_setup): Add `self' parameter to `entry_point' paramter.
2012-04-27Always pass the pthread_functions structureSamuel Thibault
* pthread/pt-initialize.c (pthread_functions): Always define. (__pthread_init): Always pass address of pthread_functions.
2012-04-23Rename __pthread_initialize into __pthread_initSamuel Thibault
The former conflicts with usage in glibc. * pthread/pt-initialize.c (__pthread_initialize): Rename into __pthread_init. * pthread/pt-internal.h (__pthread_initialize): Likewise. * sysdeps/l4/hurd/pt-sysdep.c (init_routine): Likewise. * sysdeps/mach/hurd/pt-sysdep.c (init_routine): Likewise.
2012-04-23Fix access to libpthread headers from glibcSamuel Thibault
* Makeconfig (+includes): Add our include/ directory in the header include path, for the rest of glibc.
2012-04-22Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/libpthreadSamuel Thibault
2012-04-22Fix glibc add-on installation rulesSamuel Thibault
* Makefile [IN_GLIBC=no] (inst_libdir): Define to $(libdir). (install, .PHONY, libpthread2.a, libpthread2_pic.a): Use $(inst_libdir) instead of $(libdir), enable in IN_GLIBC=yes too. [IN_GLIBC=yes] ($(inst_libdir)/libpthread.so): Define to create symlink.
2012-04-22Install bits/pthreadtypes.hSamuel Thibault
And make it expose only types, not the rest of the pthread API. * Makefile (headers): Add bits/pthreadtypes.h. * sysdeps/generic/bits/pthreadtypes.h: Include <pthread/pthreadtypes.h> instead of <pthread.h>
2012-04-22Set -B option to find libpthread.soSamuel Thibault
* Makefile (extra-B-pthread.so): Define.
2012-04-22pthread_condattr_setclock: allow a monotonic clock, if presentPino Toscano
If CLOCK_MONOTONIC is requested, check (only once) for the availability of a monotonic clock using `clock_getres'. If it is not, reject CLOCK_MONOTONIC with EINVAL (as before). * sysdeps/generic/pt-condattr-setclock.c (pthread_condattr_setclock): Check for monotonic clock if requested.
2012-04-22__pthread_timedblock: switch to clock_gettimePino Toscano
Use `clock_gettime' with the provided clock instead of `gettimeofday', linking to rt. * sysdeps/mach/pt-timedblock.c (__pthread_timedblock): Switch to `clock_gettime'. * Makefile [!IN_GLIBC] (LDLIBS): Link to rt. [IN_GLIBC] ($(objpfx)libpthread.so): Likewise. * Makefile.am (libpthread_a_LDADD): Likewise.
2012-04-22__pthread_timedblock: add an argument for the clock idPino Toscano
To make `__pthread_timedblock' properly measure time using the right clock, add a new argument representing the clock to use. * pthread/pt-internal.h (__pthread_timedblock): New argument CLOCK_ID. * sysdeps/l4/pt-timedblock.c (__pthread_timedblock): Likewise. * sysdeps/mach/pt-timedblock.c (__pthread_timedblock): Likewise. * sysdeps/generic/pt-cond-timedwait.c (__pthread_cond_timedwait_internal): Pass the clock of the `pthread_cond' to `__pthread_timedblock'. * sysdeps/generic/pt-mutex-timedlock.c (__pthread_mutex_timedlock_internal): Pass CLOCK_REALTIME to `__pthread_timedblock'. * sysdeps/generic/pt-rwlock-timedrdlock.c (__pthread_rwlock_timedrdlock_internal): Likewise. * sysdeps/generic/pt-rwlock-timedwrlock.c (__pthread_rwlock_timedwrlock_internal): Likewise. * sysdeps/generic/sem-timedwait.c (__sem_timedwait_internal): Likewise.
2012-04-21Add glibc build supportSamuel Thibault
* 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.
2012-04-21Do not redefine tcbhead_t in glibcSamuel Thibault
* pthread/pt-internal.h (tcbhead_t): Define struct only if IS_IN_libpthread is not defined.
2012-04-21Rename bits/atomic.h to bits/pt-atomic.hSamuel Thibault
This avoids a conflict with glibc-provided bits/atomic.h * sysdeps/ia32/bits/atomic.h: Rename to... * sysdeps/ia32/bits/pt-atomic.h: ... this. * pthread/pt-create.c: Include <bits/pt-atomic.h> instead of <bits/atomic.h> * pthread/pt-exit.c: Likewise. * pthread/pt-internal.h: Likewise.
2012-04-21Rename pthread functions to be used for forwardingSamuel Thibault
Libc will need to be able to call them, so they need to have a different name. * pthread/pt-exit.c (pthread_exit): Rename with __ prefix and add strong alias. * pthread/pt-self.c (pthread_self): Likewise. * pthread/pt-setcancelstate.c (pthread_setcancelstate): Likewise * pthread/pt-setcanceltype.c (pthread_setcanceltype): Likewise * sysdeps/generic/pt-attr-destroy.c (pthread_attr_destroy): Likewise * sysdeps/generic/pt-attr-getdetachstate.c (pthread_attr_getdetachstate): Likewise * sysdeps/generic/pt-attr-getinheritsched.c (pthread_attr_getinheritsched): Likewise * sysdeps/generic/pt-attr-getschedparam.c (pthread_attr_getschedparam): Likewise * sysdeps/generic/pt-attr-getschedpolicy.c (pthread_attr_getschedpolicy): Likewise * sysdeps/generic/pt-attr-getscope.c (pthread_attr_getscope): Likewise * sysdeps/generic/pt-attr-init.c (pthread_attr_init): Likewise * sysdeps/generic/pt-attr-setdetachstate.c (pthread_attr_setdetachstate): Likewise * sysdeps/generic/pt-attr-setinheritsched.c (pthread_attr_setinheritsched): Likewise * sysdeps/generic/pt-attr-setschedparam.c (pthread_attr_setschedparam): Likewise * sysdeps/generic/pt-attr-setschedpolicy.c (pthread_attr_setschedpolicy): Likewise * sysdeps/generic/pt-attr-setscope.c (pthread_attr_setscope): Likewise * sysdeps/generic/pt-cond-brdcast.c (pthread_cond_broadcast): Likewise * sysdeps/generic/pt-cond-destroy.c (pthread_cond_destroy): Likewise * sysdeps/generic/pt-cond-init.c (pthread_cond_init): Likewise * sysdeps/generic/pt-cond-signal.c (pthread_cond_signal): Likewise * sysdeps/generic/pt-cond-timedwait.c (pthread_cond_timedwait): Likewise * sysdeps/generic/pt-cond-wait.c (pthread_cond_wait): Likewise * sysdeps/generic/pt-condattr-destroy.c (pthread_condattr_destroy): Likewise * sysdeps/generic/pt-condattr-init.c (pthread_condattr_init): Likewise * sysdeps/generic/pt-equal.c (pthread_equal): Likewise * sysdeps/generic/pt-getschedparam.c (pthread_getschedparam): Likewise * sysdeps/generic/pt-setschedparam.c (pthread_setschedparam): Likewise