Age | Commit message (Collapse) | Author |
|
* include/semaphore.h: Move to ...
* sysdeps/pthread/semaphore.h: ... here.
|
|
* sysdeps/generic/raise.c (pthread_self): Make reference weak.
|
|
* sysdeps/generic/raise.c (pthread_kill): Make ref weak.
(raise): Only call pthread_kill when it is not NULL. Call kill otherwise.
|
|
* sysdeps/generic/raise.c (raise): Do not call debug.
|
|
* sysdeps/generic/raise.c: Include <pthread.h> instead of non-existing
"sig-internal.h"
|
|
* 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.
|
|
* sysdeps/generic/raise.c (pthread_self): Make reference weak.
|
|
* sysdeps/generic/raise.c (pthread_kill): Make ref weak.
(raise): Only call pthread_kill when it is not NULL. Call kill otherwise.
|
|
* sysdeps/generic/raise.c (raise): Do not call debug.
|
|
* sysdeps/generic/raise.c: Include <pthread.h> instead of non-existing
"sig-internal.h"
|
|
* 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.
|
|
* configure: New file
* include/libc-symbols.h: Remove file
* include/set-hooks: Remove file
* sysdeps/i386/bits/spin-lock-inline.h: Move to...
* b/sysdeps/mach/i386/bits/spin-lock-inline.h: ... here.
* sysdeps/i386/bits/spin-lock.h: Move to...
* b/sysdeps/mach/i386/bits/spin-lock.h: ... here.
|
|
(code grabbed from glibc)
* libpthread/sysdeps/mach/hurd/pt-sigstate.c: Include <hurd/msg.h>
(__pthread_sigstate): Use _hurd_sigstate_lock/unlock instead of
__pthread_spin_lock on `ss->lock'. Check _hurd_sigstate_pending and
send a message to the signal thread if needed.
|
|
* sysdeps/generic/pt-once.c (__pthread_once): Call __memory_barrier before
testing the __run field.
|
|
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.
|
|
* 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.
|
|
* sysdeps/generic/bits/thread-attr.h: Define __need_size_t macro, include
<stddef.h>.
|
|
* sysdeps/pthread/pthread-functions.h (pthread_functions): Rename
ptr_pthread_exit field to ptr___pthread_exit.
* pthread/pt-initialize.c (pthread_functions): Likewise.
|
|
* sysdeps/mach/hurd/pt-hurd-cond-timedwait.c (err): Initialize to 0.
|
|
* sysdeps/mach/hurd/pt-sysdep.c (_init_routine): Call ___pthread_init
instead of __pthread_init.
|
|
* sysdeps/mach/hurd/pt-sysdep.c (_init_routine): Use `stack' parameter
instead of hardcoding __libc_stack_end.
|
|
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.
|
|
* sysdeps/pthread/bits/libc-lockP.h: New file
* pthread/pthread-functions.h: Move to...
* sysdeps/pthread/pthread-functions.h: ... here.
|
|
* 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.
|
|
* 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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
* 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.
|
|
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.
|
|
* 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.
|
|
* 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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
|
|
This reverts commit 40376cfa5d8bd4814b29b777a7d0a6b2b6ed2a7c.
|
|
* sysdeps/mach/hurd/i386/Implies: Add i386.
|
|
|
|
* 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.
|
|
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.
|
|
This reverts commit 536420a581f9f822cdef0fc460b5176a840f49e5.
Now that threadvars have been replaced with TLS, this hack is no
longer needed.
|
|
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.
|
|
|
|
* sysdeps/mach/pt-stack-alloc.c(__pthread_stack_alloc): Use `stacksize`
parameter instead of `__pthread_stacksize` global variable.
|
|
* 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.
|