summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2010-08-01 01:05:53 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2010-08-01 01:05:53 +0200
commit68567b88ee8f9e395e0c1f0a565affe8a1d4d68b (patch)
tree07d3b7b96832493cb3cc57a26e88157e354cf899
parentfa0f7d1afb65bf077edfcc0f8977f95fca5656b9 (diff)
Move files to libpthread/ for inclusion along hurd
-rw-r--r--libpthread/ChangeLog2201
-rw-r--r--libpthread/Makefile247
-rw-r--r--libpthread/Makefile.am (renamed from Makefile.am)0
-rw-r--r--libpthread/TODO174
-rw-r--r--libpthread/headers.m4 (renamed from headers.m4)0
-rw-r--r--libpthread/include/libc-symbols.h395
-rw-r--r--libpthread/include/pthread.h7
-rw-r--r--libpthread/include/pthread/pthread.h744
-rw-r--r--libpthread/include/pthread/pthreadtypes.h136
-rw-r--r--libpthread/include/semaphore.h69
-rw-r--r--libpthread/include/set-hooks.h72
-rw-r--r--libpthread/libpthread.a (renamed from libpthread.a)0
-rw-r--r--libpthread/libpthread_pic.a (renamed from libpthread_pic.a)0
-rw-r--r--libpthread/lockfile.c (renamed from lockfile.c)0
-rw-r--r--libpthread/not-in-libc.h (renamed from not-in-libc.h)0
-rw-r--r--libpthread/pthread/Versions (renamed from pthread/Versions)0
-rw-r--r--libpthread/pthread/cthreads-compat.c (renamed from pthread/cthreads-compat.c)0
-rw-r--r--libpthread/pthread/pt-alloc.c (renamed from pthread/pt-alloc.c)0
-rw-r--r--libpthread/pthread/pt-cancel.c (renamed from pthread/pt-cancel.c)0
-rw-r--r--libpthread/pthread/pt-cleanup.c (renamed from pthread/pt-cleanup.c)0
-rw-r--r--libpthread/pthread/pt-create.c (renamed from pthread/pt-create.c)0
-rw-r--r--libpthread/pthread/pt-dealloc.c (renamed from pthread/pt-dealloc.c)0
-rw-r--r--libpthread/pthread/pt-detach.c (renamed from pthread/pt-detach.c)0
-rw-r--r--libpthread/pthread/pt-exit.c (renamed from pthread/pt-exit.c)0
-rw-r--r--libpthread/pthread/pt-getattr.c (renamed from pthread/pt-getattr.c)0
-rw-r--r--libpthread/pthread/pt-initialize.c (renamed from pthread/pt-initialize.c)0
-rw-r--r--libpthread/pthread/pt-internal.h (renamed from pthread/pt-internal.h)0
-rw-r--r--libpthread/pthread/pt-join.c (renamed from pthread/pt-join.c)0
-rw-r--r--libpthread/pthread/pt-self.c (renamed from pthread/pt-self.c)0
-rw-r--r--libpthread/pthread/pt-setcancelstate.c (renamed from pthread/pt-setcancelstate.c)0
-rw-r--r--libpthread/pthread/pt-setcanceltype.c (renamed from pthread/pt-setcanceltype.c)0
-rw-r--r--libpthread/pthread/pt-sigmask.c (renamed from pthread/pt-sigmask.c)0
-rw-r--r--libpthread/pthread/pt-spin-inlines.c (renamed from pthread/pt-spin-inlines.c)0
-rw-r--r--libpthread/pthread/pt-testcancel.c (renamed from pthread/pt-testcancel.c)0
-rw-r--r--libpthread/signal/README (renamed from signal/README)0
-rw-r--r--libpthread/signal/TODO (renamed from signal/TODO)0
-rw-r--r--libpthread/signal/kill.c (renamed from signal/kill.c)0
-rw-r--r--libpthread/signal/pt-kill-siginfo-np.c (renamed from signal/pt-kill-siginfo-np.c)0
-rw-r--r--libpthread/signal/sig-internal.c (renamed from signal/sig-internal.c)0
-rw-r--r--libpthread/signal/sig-internal.h (renamed from signal/sig-internal.h)0
-rw-r--r--libpthread/signal/sigaction.c (renamed from signal/sigaction.c)0
-rw-r--r--libpthread/signal/sigaltstack.c (renamed from signal/sigaltstack.c)0
-rw-r--r--libpthread/signal/signal-dispatch.c (renamed from signal/signal-dispatch.c)0
-rw-r--r--libpthread/signal/signal.h (renamed from signal/signal.h)0
-rw-r--r--libpthread/signal/sigpending.c (renamed from signal/sigpending.c)0
-rw-r--r--libpthread/signal/sigsuspend.c (renamed from signal/sigsuspend.c)0
-rw-r--r--libpthread/signal/sigtimedwait.c (renamed from signal/sigtimedwait.c)0
-rw-r--r--libpthread/signal/sigwaiter.c (renamed from signal/sigwaiter.c)0
-rw-r--r--libpthread/signal/sigwaitinfo.c (renamed from signal/sigwaitinfo.c)0
-rw-r--r--libpthread/sysdeps/generic/bits/barrier-attr.h (renamed from sysdeps/generic/bits/barrier-attr.h)0
-rw-r--r--libpthread/sysdeps/generic/bits/barrier.h (renamed from sysdeps/generic/bits/barrier.h)0
-rw-r--r--libpthread/sysdeps/generic/bits/cancelation.h (renamed from sysdeps/generic/bits/cancelation.h)0
-rw-r--r--libpthread/sysdeps/generic/bits/condition-attr.h (renamed from sysdeps/generic/bits/condition-attr.h)0
-rw-r--r--libpthread/sysdeps/generic/bits/condition.h (renamed from sysdeps/generic/bits/condition.h)0
-rw-r--r--libpthread/sysdeps/generic/bits/mutex-attr.h (renamed from sysdeps/generic/bits/mutex-attr.h)0
-rw-r--r--libpthread/sysdeps/generic/bits/mutex.h (renamed from sysdeps/generic/bits/mutex.h)0
-rw-r--r--libpthread/sysdeps/generic/bits/once.h (renamed from sysdeps/generic/bits/once.h)0
-rw-r--r--libpthread/sysdeps/generic/bits/pthread-np.h (renamed from sysdeps/generic/bits/pthread-np.h)0
-rw-r--r--libpthread/sysdeps/generic/bits/pthread.h (renamed from sysdeps/generic/bits/pthread.h)0
-rw-r--r--libpthread/sysdeps/generic/bits/pthreadtypes.h (renamed from sysdeps/generic/bits/pthreadtypes.h)0
-rw-r--r--libpthread/sysdeps/generic/bits/rwlock-attr.h (renamed from sysdeps/generic/bits/rwlock-attr.h)0
-rw-r--r--libpthread/sysdeps/generic/bits/rwlock.h (renamed from sysdeps/generic/bits/rwlock.h)0
-rw-r--r--libpthread/sysdeps/generic/bits/semaphore.h (renamed from sysdeps/generic/bits/semaphore.h)0
-rw-r--r--libpthread/sysdeps/generic/bits/thread-attr.h (renamed from sysdeps/generic/bits/thread-attr.h)0
-rw-r--r--libpthread/sysdeps/generic/bits/thread-specific.h (renamed from sysdeps/generic/bits/thread-specific.h)0
-rw-r--r--libpthread/sysdeps/generic/killpg.c (renamed from sysdeps/generic/killpg.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-atfork.c (renamed from sysdeps/generic/pt-atfork.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-destroy.c (renamed from sysdeps/generic/pt-attr-destroy.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-getdetachstate.c (renamed from sysdeps/generic/pt-attr-getdetachstate.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-getguardsize.c (renamed from sysdeps/generic/pt-attr-getguardsize.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-getinheritsched.c (renamed from sysdeps/generic/pt-attr-getinheritsched.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-getschedparam.c (renamed from sysdeps/generic/pt-attr-getschedparam.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-getschedpolicy.c (renamed from sysdeps/generic/pt-attr-getschedpolicy.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-getscope.c (renamed from sysdeps/generic/pt-attr-getscope.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-getstack.c (renamed from sysdeps/generic/pt-attr-getstack.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-getstackaddr.c (renamed from sysdeps/generic/pt-attr-getstackaddr.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-getstacksize.c (renamed from sysdeps/generic/pt-attr-getstacksize.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-init.c (renamed from sysdeps/generic/pt-attr-init.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-setdetachstate.c (renamed from sysdeps/generic/pt-attr-setdetachstate.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-setguardsize.c (renamed from sysdeps/generic/pt-attr-setguardsize.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-setinheritsched.c (renamed from sysdeps/generic/pt-attr-setinheritsched.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-setschedparam.c (renamed from sysdeps/generic/pt-attr-setschedparam.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-setschedpolicy.c (renamed from sysdeps/generic/pt-attr-setschedpolicy.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-setscope.c (renamed from sysdeps/generic/pt-attr-setscope.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-setstack.c (renamed from sysdeps/generic/pt-attr-setstack.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-setstackaddr.c (renamed from sysdeps/generic/pt-attr-setstackaddr.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr-setstacksize.c (renamed from sysdeps/generic/pt-attr-setstacksize.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-attr.c (renamed from sysdeps/generic/pt-attr.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-barrier-destroy.c (renamed from sysdeps/generic/pt-barrier-destroy.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-barrier-init.c (renamed from sysdeps/generic/pt-barrier-init.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-barrier-wait.c (renamed from sysdeps/generic/pt-barrier-wait.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-barrier.c (renamed from sysdeps/generic/pt-barrier.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-barrierattr-destroy.c (renamed from sysdeps/generic/pt-barrierattr-destroy.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-barrierattr-getpshared.c (renamed from sysdeps/generic/pt-barrierattr-getpshared.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-barrierattr-init.c (renamed from sysdeps/generic/pt-barrierattr-init.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-barrierattr-setpshared.c (renamed from sysdeps/generic/pt-barrierattr-setpshared.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-cond-brdcast.c (renamed from sysdeps/generic/pt-cond-brdcast.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-cond-destroy.c (renamed from sysdeps/generic/pt-cond-destroy.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-cond-init.c (renamed from sysdeps/generic/pt-cond-init.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-cond-signal.c (renamed from sysdeps/generic/pt-cond-signal.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-cond-timedwait.c (renamed from sysdeps/generic/pt-cond-timedwait.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-cond-wait.c (renamed from sysdeps/generic/pt-cond-wait.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-cond.c (renamed from sysdeps/generic/pt-cond.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-condattr-destroy.c (renamed from sysdeps/generic/pt-condattr-destroy.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-condattr-getclock.c (renamed from sysdeps/generic/pt-condattr-getclock.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-condattr-getpshared.c (renamed from sysdeps/generic/pt-condattr-getpshared.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-condattr-init.c (renamed from sysdeps/generic/pt-condattr-init.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-condattr-setclock.c (renamed from sysdeps/generic/pt-condattr-setclock.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-condattr-setpshared.c (renamed from sysdeps/generic/pt-condattr-setpshared.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-destroy-specific.c (renamed from sysdeps/generic/pt-destroy-specific.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-equal.c (renamed from sysdeps/generic/pt-equal.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-getconcurrency.c (renamed from sysdeps/generic/pt-getconcurrency.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-getcpuclockid.c (renamed from sysdeps/generic/pt-getcpuclockid.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-getschedparam.c (renamed from sysdeps/generic/pt-getschedparam.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-getspecific.c (renamed from sysdeps/generic/pt-getspecific.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-init-specific.c (renamed from sysdeps/generic/pt-init-specific.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-key-create.c (renamed from sysdeps/generic/pt-key-create.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-key-delete.c (renamed from sysdeps/generic/pt-key-delete.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-key.h (renamed from sysdeps/generic/pt-key.h)0
-rw-r--r--libpthread/sysdeps/generic/pt-kill.c (renamed from sysdeps/generic/pt-kill.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutex-destroy.c (renamed from sysdeps/generic/pt-mutex-destroy.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutex-getprioceiling.c (renamed from sysdeps/generic/pt-mutex-getprioceiling.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutex-init.c (renamed from sysdeps/generic/pt-mutex-init.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutex-lock.c (renamed from sysdeps/generic/pt-mutex-lock.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutex-setprioceiling.c (renamed from sysdeps/generic/pt-mutex-setprioceiling.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutex-timedlock.c (renamed from sysdeps/generic/pt-mutex-timedlock.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutex-transfer-np.c (renamed from sysdeps/generic/pt-mutex-transfer-np.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutex-trylock.c (renamed from sysdeps/generic/pt-mutex-trylock.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutex-unlock.c (renamed from sysdeps/generic/pt-mutex-unlock.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutexattr-destroy.c (renamed from sysdeps/generic/pt-mutexattr-destroy.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutexattr-getprioceiling.c (renamed from sysdeps/generic/pt-mutexattr-getprioceiling.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutexattr-getprotocol.c (renamed from sysdeps/generic/pt-mutexattr-getprotocol.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutexattr-getpshared.c (renamed from sysdeps/generic/pt-mutexattr-getpshared.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutexattr-gettype.c (renamed from sysdeps/generic/pt-mutexattr-gettype.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutexattr-init.c (renamed from sysdeps/generic/pt-mutexattr-init.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutexattr-setprioceiling.c (renamed from sysdeps/generic/pt-mutexattr-setprioceiling.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutexattr-setprotocol.c (renamed from sysdeps/generic/pt-mutexattr-setprotocol.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutexattr-setpshared.c (renamed from sysdeps/generic/pt-mutexattr-setpshared.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutexattr-settype.c (renamed from sysdeps/generic/pt-mutexattr-settype.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-mutexattr.c (renamed from sysdeps/generic/pt-mutexattr.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-once.c (renamed from sysdeps/generic/pt-once.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-rwlock-attr.c (renamed from sysdeps/generic/pt-rwlock-attr.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-rwlock-destroy.c (renamed from sysdeps/generic/pt-rwlock-destroy.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-rwlock-init.c (renamed from sysdeps/generic/pt-rwlock-init.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-rwlock-rdlock.c (renamed from sysdeps/generic/pt-rwlock-rdlock.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-rwlock-timedrdlock.c (renamed from sysdeps/generic/pt-rwlock-timedrdlock.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-rwlock-timedwrlock.c (renamed from sysdeps/generic/pt-rwlock-timedwrlock.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-rwlock-tryrdlock.c (renamed from sysdeps/generic/pt-rwlock-tryrdlock.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-rwlock-trywrlock.c (renamed from sysdeps/generic/pt-rwlock-trywrlock.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-rwlock-unlock.c (renamed from sysdeps/generic/pt-rwlock-unlock.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-rwlock-wrlock.c (renamed from sysdeps/generic/pt-rwlock-wrlock.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-rwlockattr-destroy.c (renamed from sysdeps/generic/pt-rwlockattr-destroy.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-rwlockattr-getpshared.c (renamed from sysdeps/generic/pt-rwlockattr-getpshared.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-rwlockattr-init.c (renamed from sysdeps/generic/pt-rwlockattr-init.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-rwlockattr-setpshared.c (renamed from sysdeps/generic/pt-rwlockattr-setpshared.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-setconcurrency.c (renamed from sysdeps/generic/pt-setconcurrency.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-setschedparam.c (renamed from sysdeps/generic/pt-setschedparam.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-setschedprio.c (renamed from sysdeps/generic/pt-setschedprio.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-setspecific.c (renamed from sysdeps/generic/pt-setspecific.c)0
-rw-r--r--libpthread/sysdeps/generic/pt-startup.c (renamed from sysdeps/generic/pt-startup.c)0
-rw-r--r--libpthread/sysdeps/generic/raise.c (renamed from sysdeps/generic/raise.c)0
-rw-r--r--libpthread/sysdeps/generic/sem-close.c (renamed from sysdeps/generic/sem-close.c)0
-rw-r--r--libpthread/sysdeps/generic/sem-destroy.c (renamed from sysdeps/generic/sem-destroy.c)0
-rw-r--r--libpthread/sysdeps/generic/sem-getvalue.c (renamed from sysdeps/generic/sem-getvalue.c)0
-rw-r--r--libpthread/sysdeps/generic/sem-init.c (renamed from sysdeps/generic/sem-init.c)0
-rw-r--r--libpthread/sysdeps/generic/sem-open.c (renamed from sysdeps/generic/sem-open.c)0
-rw-r--r--libpthread/sysdeps/generic/sem-post.c (renamed from sysdeps/generic/sem-post.c)0
-rw-r--r--libpthread/sysdeps/generic/sem-timedwait.c (renamed from sysdeps/generic/sem-timedwait.c)0
-rw-r--r--libpthread/sysdeps/generic/sem-trywait.c (renamed from sysdeps/generic/sem-trywait.c)0
-rw-r--r--libpthread/sysdeps/generic/sem-unlink.c (renamed from sysdeps/generic/sem-unlink.c)0
-rw-r--r--libpthread/sysdeps/generic/sem-wait.c (renamed from sysdeps/generic/sem-wait.c)0
-rw-r--r--libpthread/sysdeps/generic/sigaddset.c (renamed from sysdeps/generic/sigaddset.c)0
-rw-r--r--libpthread/sysdeps/generic/sigdelset.c (renamed from sysdeps/generic/sigdelset.c)0
-rw-r--r--libpthread/sysdeps/generic/sigemptyset.c (renamed from sysdeps/generic/sigemptyset.c)0
-rw-r--r--libpthread/sysdeps/generic/sigfillset.c (renamed from sysdeps/generic/sigfillset.c)0
-rw-r--r--libpthread/sysdeps/generic/siginterrupt.c (renamed from sysdeps/generic/siginterrupt.c)0
-rw-r--r--libpthread/sysdeps/generic/sigismember.c (renamed from sysdeps/generic/sigismember.c)0
-rw-r--r--libpthread/sysdeps/generic/signal.c (renamed from sysdeps/generic/signal.c)0
-rw-r--r--libpthread/sysdeps/generic/sigwait.c (renamed from sysdeps/generic/sigwait.c)0
-rw-r--r--libpthread/sysdeps/hurd/pt-destroy-specific.c (renamed from sysdeps/hurd/pt-destroy-specific.c)0
-rw-r--r--libpthread/sysdeps/hurd/pt-getspecific.c (renamed from sysdeps/hurd/pt-getspecific.c)0
-rw-r--r--libpthread/sysdeps/hurd/pt-init-specific.c (renamed from sysdeps/hurd/pt-init-specific.c)0
-rw-r--r--libpthread/sysdeps/hurd/pt-key-create.c (renamed from sysdeps/hurd/pt-key-create.c)0
-rw-r--r--libpthread/sysdeps/hurd/pt-key-delete.c (renamed from sysdeps/hurd/pt-key-delete.c)0
-rw-r--r--libpthread/sysdeps/hurd/pt-key.h (renamed from sysdeps/hurd/pt-key.h)0
-rw-r--r--libpthread/sysdeps/hurd/pt-kill.c (renamed from sysdeps/hurd/pt-kill.c)0
-rw-r--r--libpthread/sysdeps/hurd/pt-setspecific.c (renamed from sysdeps/hurd/pt-setspecific.c)0
-rw-r--r--libpthread/sysdeps/ia32/bits/atomic.h (renamed from sysdeps/ia32/bits/atomic.h)0
-rw-r--r--libpthread/sysdeps/ia32/bits/memory.h (renamed from sysdeps/ia32/bits/memory.h)0
-rw-r--r--libpthread/sysdeps/ia32/bits/spin-lock-inline.h (renamed from sysdeps/ia32/bits/spin-lock-inline.h)0
-rw-r--r--libpthread/sysdeps/ia32/bits/spin-lock.h (renamed from sysdeps/ia32/bits/spin-lock.h)0
-rw-r--r--libpthread/sysdeps/ia32/machine-sp.h (renamed from sysdeps/ia32/machine-sp.h)0
-rw-r--r--libpthread/sysdeps/ia32/pt-machdep.h (renamed from sysdeps/ia32/pt-machdep.h)0
-rw-r--r--libpthread/sysdeps/l4/bits/pthread-np.h (renamed from sysdeps/l4/bits/pthread-np.h)0
-rw-r--r--libpthread/sysdeps/l4/hurd/bits/pthread-np.h (renamed from sysdeps/l4/hurd/bits/pthread-np.h)0
-rw-r--r--libpthread/sysdeps/l4/hurd/ia32/pt-machdep.c (renamed from sysdeps/l4/hurd/ia32/pt-machdep.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/ia32/pt-setup.c (renamed from sysdeps/l4/hurd/ia32/pt-setup.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/ia32/signal-dispatch-lowlevel.c (renamed from sysdeps/l4/hurd/ia32/signal-dispatch-lowlevel.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/powerpc/pt-machdep.c (renamed from sysdeps/l4/hurd/powerpc/pt-machdep.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/powerpc/pt-setup.c (renamed from sysdeps/l4/hurd/powerpc/pt-setup.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/pt-block.c (renamed from sysdeps/l4/hurd/pt-block.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/pt-kill.c (renamed from sysdeps/l4/hurd/pt-kill.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/pt-setactivity-np.c (renamed from sysdeps/l4/hurd/pt-setactivity-np.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/pt-sigstate-destroy.c (renamed from sysdeps/l4/hurd/pt-sigstate-destroy.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/pt-sigstate-init.c (renamed from sysdeps/l4/hurd/pt-sigstate-init.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/pt-sigstate.c (renamed from sysdeps/l4/hurd/pt-sigstate.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/pt-startup.c (renamed from sysdeps/l4/hurd/pt-startup.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/pt-sysdep.c (renamed from sysdeps/l4/hurd/pt-sysdep.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/pt-sysdep.h (renamed from sysdeps/l4/hurd/pt-sysdep.h)0
-rw-r--r--libpthread/sysdeps/l4/hurd/pt-thread-alloc.c (renamed from sysdeps/l4/hurd/pt-thread-alloc.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/pt-thread-halt.c (renamed from sysdeps/l4/hurd/pt-thread-halt.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/pt-thread-start.c (renamed from sysdeps/l4/hurd/pt-thread-start.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/pt-wakeup.c (renamed from sysdeps/l4/hurd/pt-wakeup.c)0
-rw-r--r--libpthread/sysdeps/l4/hurd/sig-sysdep.h (renamed from sysdeps/l4/hurd/sig-sysdep.h)0
-rw-r--r--libpthread/sysdeps/l4/hurd/sigprocmask.c (renamed from sysdeps/l4/hurd/sigprocmask.c)0
-rw-r--r--libpthread/sysdeps/l4/pt-block.c (renamed from sysdeps/l4/pt-block.c)0
-rw-r--r--libpthread/sysdeps/l4/pt-docancel.c (renamed from sysdeps/l4/pt-docancel.c)0
-rw-r--r--libpthread/sysdeps/l4/pt-pool-np.c (renamed from sysdeps/l4/pt-pool-np.c)0
-rw-r--r--libpthread/sysdeps/l4/pt-spin.c (renamed from sysdeps/l4/pt-spin.c)0
-rw-r--r--libpthread/sysdeps/l4/pt-stack-alloc.c (renamed from sysdeps/l4/pt-stack-alloc.c)0
-rw-r--r--libpthread/sysdeps/l4/pt-thread-alloc.c (renamed from sysdeps/l4/pt-thread-alloc.c)0
-rw-r--r--libpthread/sysdeps/l4/pt-thread-dealloc.c (renamed from sysdeps/l4/pt-thread-dealloc.c)0
-rw-r--r--libpthread/sysdeps/l4/pt-thread-halt.c (renamed from sysdeps/l4/pt-thread-halt.c)0
-rw-r--r--libpthread/sysdeps/l4/pt-thread-start.c (renamed from sysdeps/l4/pt-thread-start.c)0
-rw-r--r--libpthread/sysdeps/l4/pt-timedblock.c (renamed from sysdeps/l4/pt-timedblock.c)0
-rw-r--r--libpthread/sysdeps/l4/pt-wakeup.c (renamed from sysdeps/l4/pt-wakeup.c)0
-rw-r--r--libpthread/sysdeps/mach/bits/spin-lock-inline.h (renamed from sysdeps/mach/bits/spin-lock-inline.h)0
-rw-r--r--libpthread/sysdeps/mach/bits/spin-lock.h (renamed from sysdeps/mach/bits/spin-lock.h)0
-rw-r--r--libpthread/sysdeps/mach/hurd/ia32/pt-machdep.c (renamed from sysdeps/mach/hurd/ia32/pt-machdep.c)0
-rw-r--r--libpthread/sysdeps/mach/hurd/ia32/pt-setup.c (renamed from sysdeps/mach/hurd/ia32/pt-setup.c)0
-rw-r--r--libpthread/sysdeps/mach/hurd/pt-attr-setstackaddr.c (renamed from sysdeps/mach/hurd/pt-attr-setstackaddr.c)0
-rw-r--r--libpthread/sysdeps/mach/hurd/pt-attr-setstacksize.c (renamed from sysdeps/mach/hurd/pt-attr-setstacksize.c)0
-rw-r--r--libpthread/sysdeps/mach/hurd/pt-docancel.c (renamed from sysdeps/mach/hurd/pt-docancel.c)0
-rw-r--r--libpthread/sysdeps/mach/hurd/pt-sigstate-destroy.c (renamed from sysdeps/mach/hurd/pt-sigstate-destroy.c)0
-rw-r--r--libpthread/sysdeps/mach/hurd/pt-sigstate-init.c (renamed from sysdeps/mach/hurd/pt-sigstate-init.c)0
-rw-r--r--libpthread/sysdeps/mach/hurd/pt-sigstate.c (renamed from sysdeps/mach/hurd/pt-sigstate.c)0
-rw-r--r--libpthread/sysdeps/mach/hurd/pt-sysdep.c (renamed from sysdeps/mach/hurd/pt-sysdep.c)0
-rw-r--r--libpthread/sysdeps/mach/hurd/pt-sysdep.h (renamed from sysdeps/mach/hurd/pt-sysdep.h)0
-rw-r--r--libpthread/sysdeps/mach/pt-block.c (renamed from sysdeps/mach/pt-block.c)0
-rw-r--r--libpthread/sysdeps/mach/pt-spin.c (renamed from sysdeps/mach/pt-spin.c)0
-rw-r--r--libpthread/sysdeps/mach/pt-stack-alloc.c (renamed from sysdeps/mach/pt-stack-alloc.c)0
-rw-r--r--libpthread/sysdeps/mach/pt-thread-alloc.c (renamed from sysdeps/mach/pt-thread-alloc.c)0
-rw-r--r--libpthread/sysdeps/mach/pt-thread-dealloc.c (renamed from sysdeps/mach/pt-thread-dealloc.c)0
-rw-r--r--libpthread/sysdeps/mach/pt-thread-halt.c (renamed from sysdeps/mach/pt-thread-halt.c)0
-rw-r--r--libpthread/sysdeps/mach/pt-thread-start.c (renamed from sysdeps/mach/pt-thread-start.c)0
-rw-r--r--libpthread/sysdeps/mach/pt-timedblock.c (renamed from sysdeps/mach/pt-timedblock.c)0
-rw-r--r--libpthread/sysdeps/mach/pt-wakeup.c (renamed from sysdeps/mach/pt-wakeup.c)0
-rw-r--r--libpthread/sysdeps/posix/pt-spin.c (renamed from sysdeps/posix/pt-spin.c)0
-rw-r--r--libpthread/sysdeps/powerpc/bits/machine-lock.h (renamed from sysdeps/powerpc/bits/machine-lock.h)0
-rw-r--r--libpthread/sysdeps/powerpc/bits/memory.h (renamed from sysdeps/powerpc/bits/memory.h)0
-rw-r--r--libpthread/sysdeps/powerpc/bits/spin-lock.h (renamed from sysdeps/powerpc/bits/spin-lock.h)0
-rw-r--r--libpthread/sysdeps/powerpc/machine-sp.h (renamed from sysdeps/powerpc/machine-sp.h)0
-rw-r--r--libpthread/sysdeps/powerpc/pt-machdep.h (renamed from sysdeps/powerpc/pt-machdep.h)0
-rw-r--r--libpthread/tests/.cvsignore (renamed from tests/.cvsignore)0
-rw-r--r--libpthread/tests/Makefile (renamed from tests/Makefile)0
-rw-r--r--libpthread/tests/test-1.c (renamed from tests/test-1.c)0
-rw-r--r--libpthread/tests/test-10.c (renamed from tests/test-10.c)0
-rw-r--r--libpthread/tests/test-11.c (renamed from tests/test-11.c)0
-rw-r--r--libpthread/tests/test-12.c (renamed from tests/test-12.c)0
-rw-r--r--libpthread/tests/test-13.c (renamed from tests/test-13.c)0
-rw-r--r--libpthread/tests/test-14.c (renamed from tests/test-14.c)0
-rw-r--r--libpthread/tests/test-15.c (renamed from tests/test-15.c)0
-rw-r--r--libpthread/tests/test-16.c (renamed from tests/test-16.c)0
-rw-r--r--libpthread/tests/test-2.c (renamed from tests/test-2.c)0
-rw-r--r--libpthread/tests/test-3.c (renamed from tests/test-3.c)0
-rw-r--r--libpthread/tests/test-4.c (renamed from tests/test-4.c)0
-rw-r--r--libpthread/tests/test-5.c (renamed from tests/test-5.c)0
-rw-r--r--libpthread/tests/test-6.c (renamed from tests/test-6.c)0
-rw-r--r--libpthread/tests/test-7.c (renamed from tests/test-7.c)0
-rw-r--r--libpthread/tests/test-8.c (renamed from tests/test-8.c)0
-rw-r--r--libpthread/tests/test-9.c (renamed from tests/test-9.c)0
271 files changed, 4045 insertions, 0 deletions
diff --git a/libpthread/ChangeLog b/libpthread/ChangeLog
new file mode 100644
index 00000000..2dcc1777
--- /dev/null
+++ b/libpthread/ChangeLog
@@ -0,0 +1,2201 @@
+2009-01-10 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * sysdeps/i386/bits/spin-lock.h (__SPIN_LOCK_INITIALIZER): Rename
+ macro to...
+ (__PTHREAD_SPIN_LOCK_INITIALIZER): ... this.
+ * sysdeps/mach/bits/spin-lock.h (__SPIN_LOCK_INITIALIZER): Rename
+ macro to...
+ (__PTHREAD_SPIN_LOCK_INITIALIZER): ... this.
+
+ * include/pthread/pthread.h (PTHREAD_SPINLOCK_INITIALIZER): Use
+ __PTHREAD_SPIN_LOCK_INITIALIZER instead of
+ __SPIN_LOCK_INITIALIZER.
+ * sysdeps/generic/bits/condition.h (__PTHREAD_COND_INITIALIZER):
+ Likewise.
+ * sysdeps/generic/bits/mutex.h (__PTHREAD_MUTEX_INITIALIZER,
+ __PTHREAD_RECURSIVE_MUTEX_INITIALIZER):
+ Likewise.
+ * sysdeps/generic/bits/once.h (__PTHREAD_ONCE_INIT): Likewise.
+ * sysdeps/generic/bits/rwlock.h (__PTHREAD_RWLOCK_INITIALIZER):
+ Likewise.
+ * sysdeps/generic/bits/semaphore.h (__SEMAPHORE_INITIALIZER):
+ Likewise.
+ * sysdeps/i386/bits/spin-lock-inline.h (__pthread_spin_init):
+ Likewise.
+ * sysdeps/i386/mach/spin-lock-inline.h (__pthread_spin_init):
+ Likewise.
+
+2008-12-21 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * sysdeps/mach/pt-timedblock.c (__pthread_timedblock): Fix timeout
+ computation from abstime and now.
+ * include/pthread/pthread.h (PTHREAD_RWLOCK_INITIALIZER): New macro.
+
+2008-10-02 Neal H. Walfield <neal@gnu.org>
+
+ * sysdeps/generic/pt-mutex-timedlock.c
+ (__pthread_mutex_timedlock_internal) [! ALWAYS_TRACK_MUTEX_OWNER]:
+ Don't update MUTEX->OWNER or assert MUTEX->OWNER for normal
+ mutexes.
+ * sysdeps/generic/pt-mutex-unlock.c (__pthread_mutex_unlock)
+ [! ALWAYS_TRACK_MUTEX_OWNER]: Don't update MUTEX->OWNER or assert
+ MUTEX->OWNER for normal mutexes.
+ * sysdeps/generic/pt-mutex-transfer-np.c
+ (__pthread_mutex_transfer_np) [! ALWAYS_TRACK_MUTEX_OWNER]: Don't
+ update MUTEX->OWNER for normal mutexes.
+
+2008-08-27 Neal H. Walfield <neal@gnu.org>
+
+ * pthread/cthreads-compat.c: Don't include <cthreads.h>.
+ (cthread_t): New type definition.
+ (cthread_fn_t): Likewise.
+ (cthread_key_t): Likewise.
+ (CTHREAD_KEY_INVALID): Define.
+
+2008-08-26 Neal H. Walfield <neal@gnu.org>
+
+ * sysdeps/mach/pt-thread-alloc.c (__pthread_thread_alloc): Set
+ THREAD->HAVE_KERNEL_RESOURCES to 1, not true. Reported by Flávio
+ Cruz <Flávio Cruz>.
+
+2008-08-16 Neal H. Walfield <neal@gnu.org>
+
+ * pthread/pt-alloc.c: Don't include <bits/atomic.h>.
+ (__pthread_free_threads): Change to a struct __pthread *.
+ (__pthread_free_threads_lock): New variable.
+ (__pthread_alloc): When looking for a TCB to reuse, iterate over
+ __pthread_free_threads taking the first for which the STATE field
+ is PTHREAD_TERMINATED. When reusing a TCB, first call
+ __pthread_thread_halt on it.
+ * pthread/pt-dealloc.c: Don't include <bits/atomic.h>.
+ (__pthread_free_threads): Change to a struct __pthread *.
+ (__pthread_free_threads_lock): New declaration.
+ (__pthread_dealloc): Enqueue PTHREAD on __PTHREAD_FREE_THREADS.
+ Set PTHREAD->STATE to PTHREAD_TERMINATED after everything else.
+ * pthread/pt-join.c (pthread_join): Call __pthread_thread_halt
+ before destroying the thread. When destroying the thread, call
+ __pthread_thread_dealloc on it.
+ * pthread/pt-detach.c (pthread_detach): If destroying the thread,
+ call __pthread_thread_halt before deallocating the stack. In this
+ case, also call __pthread_thread_dealloc on the tcb.
+ * pthread/pt-exit.c (pthread_exit): Call __pthread_dealloc only if
+ the thread is detached and then as the last thing we do before
+ calling __pthread_thread_halt.
+ * pthread/pt-internal.h (__pthread_thread_halt): Remove argument
+ NEED_DEALLOC. Update users.
+ * sysdeps/mach/pt-thread-halt.c (__pthread_thread_halt): Remove
+ argument need_dealloc.
+ * sysdeps/mach/hurd/pt-sysdep.h (PTHREAD_SYSDEP_MEMBERS): Add field
+ have_kernel_resources.
+ * sysdeps/mach/hurd/pt-thread-alloc.c (__pthread_thread_alloc): If
+ THREAD->HAVE_KERNEL_RESOURCES is true, just return. After
+ allocating the resources, set THREAD->HAVE_KERNEL_RESOURCES to
+ true.
+
+2008-08-12 Neal H. Walfield <neal@gnu.org>
+
+ Merge changes from hurd-l4 fork.
+
+ * Makefile (SRCS): Add pt-startup.c and pt-mutex-transfer-np.c.
+ (sysdeps_headers): Add pthread-np.h.
+
+2008-08-12 Neal H. Walfield <neal@gnu.org>
+
+ * sysdeps/generic/bits/pthread-np.h: New file.
+
+2008-08-12 Neal H. Walfield <neal@gnu.org>
+
+ * sysdeps/generic/pt-startup.c: New file.
+
+2008-08-12 Neal H. Walfield <neal@gnu.org>
+
+ * sysdeps/generic/bits/mutex.h (__PTHREAD_RECURSIVE_MUTEX_INITIALIZER):
+ Define.
+ (__PTHREAD_MUTEX_RECURSIVE_INITIALIZER): Don't define.
+ * include/pthread/pthread.h
+ (PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) [__USE_GNU]: Define.
+ (PTHREAD_MUTEX_RECURSIVE_INITIALIZER_NP): Don't define.
+
+2008-08-12 Neal H. Walfield <neal@gnu.org>
+
+ * include/pthread/pthread.h: Include <sys/cdefs.h>.
+ (__extern_inline): If not defined, define appropriately.
+
+2008-06-01 Neal H. Walfield <neal@gnu.org>
+
+ * include/pthread/pthread.h (PTHREAD_MUTEX_RECURSIVE_INITIALIZER_NP):
+ New definition.
+ * sysdeps/generic/bits/mutex.h
+ (__PTHREAD_MUTEX_RECURSIVE_INITIALIZER): New definition.
+ * sysdeps/generic/bits/mutex-attr.h (__pthread_recursive_mutexattr):
+ New definition.
+ * sysdeps/generic/pt-mutexattr.c (__pthread_recursive_mutexattr):
+ New declaration.
+ * sysdeps/generic/pt-mutex-init.c (_pthread_mutex_init): If ATTR
+ is &__PTHREAD_RECURSIVE_MUTEXATTR, don't allocate a copy, just
+ save in MUTEX->ATTR.
+ * sysdeps/generic/pt-mutex-destroy.c (_pthread_mutex_destroy): If
+ MUTEX->ATTR is &__PTHREAD_RECURSIVE_MUTEXATTR, don't free it.
+
+2008-05-29 Thomas Schwinge <tschwinge@gnu.org>
+
+ * sysdeps/generic/sem-timedwait.c: Don't include <error.h>.
+
+2008-05-21 Neal H. Walfield <neal@gnu.org>
+
+ * include/pthread/pthread.h: Include <bits/pthread-np.h>.
+
+2008-03-01 Neal H. Walfield <neal@gnu.org>
+
+ * sysdeps/generic/pt-mutex-transfer-np.c: New file.
+
+ * pthread/pt-self.c (pthread_self): Assert that SELF is not NULL.
+
+2007-12-23 Neal H. Walfield <neal@gnu.org>
+
+ * pthread/pt-join.c (pthread_join): Cast argument to
+ pthread_cleanup_push to avoid warning.
+
+2007-11-23 Neal H. Walfield <neal@gnu.org>
+
+ * pthread/pt-internal.h (__pthread_startup): Add declaration.
+ * pthread/pt-create.c (entry_point): Call __pthread_startup.
+
+2008-08-12 Neal H. Walfield <neal@gnu.org>
+
+ * sysdeps/generic/pt-mutex-unlock.c (__pthread_mutex_unlock):
+ Remove dead code.
+
+2008-08-11 Neal H. Walfield <neal@gnu.org>
+
+ * sysdeps/l4/pt-docancel.c: Remove file.
+ * sysdeps/l4/pt-thread-alloc.c: Likewise.
+ * sysdeps/l4/pt-wakeup.c: Likewise.
+ * sysdeps/l4/pt-thread-halt.c: Likewise.
+ * sysdeps/l4/pt-start.c: Likewise.
+ * sysdeps/l4/pt-stack-alloc.c: Likewise.
+ * sysdeps/l4/pt-thread-start.c: Likewise.
+ * sysdeps/l4/pt-block.c: Likewise.
+ * sysdeps/l4/hurd/pt-sysdep.h: Likewise.
+ * sysdeps/l4/hurd/pt-sysdep.c: Likewise.
+ * sysdeps/l4/hurd/i386/pt-setup.c: Likewise.
+ * sysdeps/l4/hurd/i386/pt-machdep.c: Likewise.
+
+2008-08-04 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * include/pthread/pthreadtypes.h (__pthread_inheritsched): Remove
+ comma at end of enumeration.
+
+2008-08-03 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * Makefile (sysdeps_headers): Add spin-lock-inline.h.
+ (SYSDEP_PATH): Move sysdeps/i386 right after
+ sysdeps/$(MICROKERNEL)/i386.
+ * include/pthread/pthread.h: Include <bits/spin-lock-inline.h>.
+ * sysdeps/i386/bits/spin-lock.h: Move inlines to...
+ * sysdeps/i386/bits/spin-lock-inline.h: ... new file.
+ * sysdeps/mach/bits/spin-lock.h: Move inlines to...
+ * sysdeps/mach/bits/spin-lock-inline.h: ... new file.
+
+2008-08-02 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * sysdeps/generic/bits/mutex.h: Do not include <errno.h> and
+ <stddef.h>
+ * sysdeps/i386/bits/memory.h (__memory_barrier): Add memory clobber.
+ * sysdeps/i386/bits/spin-lock.h (__pthread_spin_trylock,
+ __pthread_spin_unlock): Add memory clobbers.
+ * sysdeps/mach/hurd/i386/pt-setup.c (stack_setup): Fix cast from
+ thread to integer. Fix reservation of stack room for initial frame.
+ * sysdeps/l4/hurd/i386/pt-setup.c (stack_setup): Fix reservation of
+ stack room for initial frame.
+
+2008-07-18 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * Makefile (sysdeps_headers): add pthread/pthreadtypes.h
+
+2008-06-29 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * sysdeps/generic/pt-mutex-unlock.c (__pthread_mutex_unlock):
+ Do not use assertx and threadid.
+
+2008-06-27 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * include/pthread/pthread.h: Do not define __need_clockid_t, include
+ <time.h>, and define clockid_t if __clockid_defined is not defined.
+ Include <pthread/pthreadtypes.h>
+ (pthread_equal): New extern inline.
+ (pthread_cleanup_push, pthread_cleanup_pop): New macros.
+ (__pthread_process_shared, __pthread_inheritsched,
+ __pthread_contentionscope, __pthread_detachstate,
+ __pthread_mutex_protocol, __pthread_mutex_type,
+ pthread_attr_t, pthread_mutex_attr_t, pthread_mutex_t,
+ pthread_condattr_t, pthread_cond_t, pthread_spinlock_t,
+ pthread_rwlockattr_t, pthread_rwlock_t, pthread_barrierattr_t,
+ pthread_barrier_t, pthread_key_t, pthread_once_t): Move enums and
+ typedefs to...
+ * include/pthread/pthreadtypes.h: ... new file.
+ * sysdeps/generic/bits/cancelation.h (pthread_cleanup_push): Rename
+ macro to __pthread_cleanup_push.
+ (pthread_cleanup_pop): Rename macro to __pthread_cleanup_pop.
+ * sysdeps/generic/bits/barrier-attr.h (__pthread_process_shared):
+ Forward-declare enum.
+ * sysdeps/generic/bits/condition-attr.h (__pthread_process_shared):
+ Likewise.
+ * sysdeps/generic/bits/mutex-attr.h (__pthread_mutex_protocol,
+ __pthread_process_shared, __pthread_mutex_type):
+ Likewise.
+ * sysdeps/generic/bits/rwlock-attr.h (__pthread_process_shared):
+ Likewise.
+ * sysdeps/generic/bits/thread-attr.h (__pthread_detachstate,
+ __pthread_inheritsched, __pthread_contentionscope):
+ Likewise.
+ * sysdeps/generic/bits/pthread.h (pthread_t): Rename type to
+ __pthread_t.
+ (pthread_equal): Rename to __pthread_equal.
+
+2008-06-27 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * sysdeps/generic/bits/thread-barrier.h: Remove unused file.
+
+2008-06-22 Neal H. Walfield <neal@gnu.org>
+
+ * sysdeps/generic/pt-mutex-timedlock.c
+ (__pthread_mutex_timedlock_internal) [! NDEBUG]: Set MUTEX->OWNER
+ appropriately and assert that it is consistent.
+ * sysdeps/generic/pt-mutex-unlock.c (__pthread_mutex_unlock) [!
+ NDEBUG]: Set MUTEX->OWNER appropriately and assert that it is
+ consistent.
+ * sysdeps/generic/pt-mutex-trylock.c (__pthread_mutex_trylock) [!
+ NDEBUG]: Set MUTEX->OWNER.
+
+2008-06-07 Neal H. Walfield <neal@gnu.org>
+
+ * pthread/pt-internal.h (__pthread_queue_iterate): Use 1, not
+ true.
+ (__pthread_dequeuing_iterate): Likewise.
+
+2008-05-27 Neal H. Walfield <neal@gnu.org>
+
+ * pthread/pt-internal.h (__pthread_queue_iterate): Before
+ returning the current element, save its next pointer.
+ (__pthread_dequeuing_iterate): Likewise.
+
+2008-05-27 Neal H. Walfield <neal@gnu.org>
+
+ * sysdeps/mach/hurd/pt-docancel.c (__pthread_do_cancel): Fix
+ assert.
+
+2008-05-17 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * include/pthread/pthread.h (pthread_getattr_np): New declaration.
+ * pthread/pt-getattr.c: New file.
+ * Makefile (SRCS): Add pt-getattr.c.
+
+2008-03-16 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * include/libc-symbols.h (HAVE_ASM_PREVIOUS_DIRECTIVE): Define.
+
+2008-02-29 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * sysdeps/l4/hurd/i386/pt-setup.c (stack_setup): Align stack on 0x10
+ for MMX operations.
+ * sysdeps/mach/hurd/i386/pt-setup.c (stack_setup): Likewise.
+
+2008-01-01 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * include/pthread/pthread.h (pthread_spin_destroy, pthread_spin_init,
+ pthread_spin_lock, pthread_spin_trylock, pthread_spin_unlock): Use
+ __extern_inline macro instead of extern __inline.
+ * sysdeps/i386/bits/spin-lock.h (__PT_SPIN_INLINE,
+ __pthread_spin_lock): Likewise
+ * sysdeps/mach/bits/spin-lock.h (__PT_SPIN_INLINE,
+ __pthread_spin_lock): Likewise
+ * sysdeps/generic/bits/pthread.h (pthread_equal): Declare ; only
+ provide inline when __USE_EXTERN_INLINES is defined. Use __extern_inline
+ macro instead of extern __inline.
+ * sysdeps/i386/bits/memory.h (__memory_barrier): Add static to inline.
+
+2007-11-19 Thomas Schwinge <tschwinge@gnu.org>
+
+ * Makefile (CFLAGS): Don't set and instead...
+ (CPPFLAGS): ... append the inclusion stuff to these.
+
+2007-08-02 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * sysdeps/generic/bits/mutex.h (pthread_mutex_init)
+ (pthread_mutex_destroy, __pthread_mutex_lock, __pthread_mutex_trylock)
+ (pthread_mutex_lock, pthread_mutex_trylock): Remove inline
+ definitions.
+ * sysdeps/generic/bits/rwlock.h (pthread_rwlock_init)
+ (pthread_rwlock_destroy): Likewise.
+
+2007-06-24 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * include/semaphore.h (sem_timedwait): Declare only if __USE_XOPEN2K
+ is defined.
+ * include/pthread/pthread.h (pthread_attr_getstack)
+ (pthread_attr_setstack, pthread_mutex_timedlock)
+ (pthread_condattr_getclock, pthread_condattr_setclock)
+ (pthread_rwlock_timedrdlock, pthread_rwlock_timedwrlock)
+ (pthread_barrierattr_t, pthread_barrierattr_init)
+ (pthread_barrierattr_destroy, pthread_barrierattr_getpshared)
+ (pthread_barrierattr_setpshared, pthread_barrier_t)
+ (PTHREAD_BARRIER_SERIAL_THREAD, pthread_barrier_init)
+ (pthread_barrier_destroy, pthread_barrier_wait)
+ (pthread_getcpuclockid): Declare only if __USE_XOPEN2K is defined.
+ (pthread_mutexattr_getprioceiling, pthread_mutexattr_setprioceiling)
+ (pthread_mutexattr_getprotocol, pthread_mutexattr_setprotocol)
+ (pthread_mutexattr_gettype, pthread_mutexattr_settype)
+ (pthread_mutex_getprioceiling, pthread_mutex_setprioceiling)
+ (pthread_setconcurrency, pthread_getconcurrency): Declare only if
+ __USE_UNIX98 is defined.
+ (pthread_rwlockattr_t, pthread_rwlockattr_init)
+ (pthread_rwlockattr_destroy, pthread_rwlockattr_getpshared)
+ (pthread_rwlockattr_setpshared, pthread_rwlock_t, pthread_rwlock_init)
+ (pthread_rwlock_destroy, pthread_rwlock_rdlock)
+ (pthread_rwlock_tryrdlock, pthread_rwlock_wrlock)
+ (pthread_rwlock_trywrlock, pthread_rwlock_unlock): Declare only if
+ __USE_UNIX98 or __USE_XOPEN2K are defined.
+ (PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT, PTHREAD_PRIO_PROTECT)
+ (PTHREAD_MUTEX_NORMAL, PTHREAD_MUTEX_ERRORCHECK)
+ (PTHREAD_MUTEX_RECURSIVE, PTHREAD_MUTEX_DEFAULT):
+ Define only if __USE_UNIX98 is defined.
+ (PTHREAD_MUTEX_FAST_NP): Define for compatibility when __USE_GNU is
+ defined.
+ * sysdeps/generic/bits/rwlock.h (pthread_rwlock_init)
+ (pthread_rwlock_destroy): Declare only if __USE_UNIX98 or
+ __USE_XOPEN2K are defined.
+ * TODO: Drop that TODO item.
+
+2006-03-04 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * sysdeps/i386/machine-sp.h (thread_stack_pointer):
+ Optimize esp read.
+ * include/pthread/pthread.h: Add the restrict keyword where
+ appropriate for full compliance.
+ * pthread/pt-internal.h: Likewise.
+ * sysdeps/generic/bits/mutex.h: Likewise.
+ * sysdeps/generic/bits/rwlock.h: Likewise.
+ * TODO: Drop that TODO item.
+
+2006-01-20 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ Do not let other libraries (like libX11) override libpthread's
+ pthread_mutex_*, pthread_rwlock_* and sem_* dynamic symbols.
+ * sysdeps/generic/pt-mutex-destroy.c
+ (pthread_mutex_destroy): Make the alias strong.
+ * sysdeps/generic/pt-mutex-init.c
+ (pthread_mutex_init): Likewise.
+ * sysdeps/generic/pt-mutex-lock.c
+ (_pthread_mutex_lock, pthread_mutex_lock): Likewise.
+ * sysdeps/generic/pt-mutex-trylock.c
+ (_pthread_mutex_trylock, pthread_mutex_trylock): Likewise.
+ * sysdeps/generic/pt-mutex-unlock.c
+ (_pthread_mutex_lock, pthread_mutex_unlock): Likewise.
+ * sysdeps/generic/pt-rwlock-destroy.c
+ (pthread_rwlock_destroy): Likewise.
+ * sysdeps/generic/pt-rwlock-init.c
+ (pthread_rwlock_init): Likewise.
+ * sysdeps/generic/sem-destroy.c (sem_destroy): Likewise.
+ * sysdeps/generic/sem-getvalue.c (sem_getvalue): Likewise.
+ * sysdeps/generic/sem-init.c (sem_init): Likewise.
+ * sysdeps/generic/sem-open.c (sem_open): Likewise.
+ * sysdeps/generic/sem-post.c (sem_post): Likewise.
+ * sysdeps/generic/sem-timedwait.c (sem_timedwait): Likewise.
+ * sysdeps/generic/sem-trywait.c (sem_trywait): Likewise.
+ * sysdeps/generic/sem-unlink.c (sem_unlink): Likewise.
+ * sysdeps/generic/sem-wait.c (sem_wait): Likewise.
+
+2006-03-27 Thomas Schwinge <tschwinge@gnu.org>
+
+ * Makefile (SRCS): Don't define two times and only list `pt-attr.c'
+ once. Reported by Jeff Bailey <jbailey@gnu.org>.
+
+2005-08-28 Neal H. Walfield <neal@gnu.org>
+
+ * include/semaphore.h: Use __restrict, not restrict.
+
+2005-05-31 Neal H. Walfield <neal@gnu.org>
+
+ * include/pthread/pthread.h: If clockid_t is still not defined
+ after including <time.h>, define it manually.
+
+2005-05-17 Neal H. Walfield <neal@gnu.org>
+
+ * include/pthread/pthread.h: Define __need_clockid_t before
+ including <time.h>.
+
+2005-05-12 Neal H. Walfield <neal@gnu.org>
+
+ * include/pthread/pthread.h (pthread_exit): Add noreturn
+ attribute.
+
+ * sysdeps/generic/bits/condition.h (__PTHREAD_COND_INITIALIZER):
+ Don't create a compound literal.
+ * sysdeps/generic/bits/mutex.h (__PTHREAD_MUTEX_INITIALIZER):
+ Don't create a compound literal.
+ (pthread_mutex_init): Don't assign to *__MUTEX directly.
+ Initialize an intermediate local variable and then copy the
+ result.
+ * sysdeps/generic/bits/rwlock.h (__PTHREAD_RWLOCK_INITIALIZER):
+ Don't create a compound literal.
+ (pthread_rwlock_init): Don't assign to *__RWLOCK directly.
+ Initialize an intermediate local variable and then copy the
+ result.
+ * sysdeps/i386/bits/spin-lock.h (__SPIN_LOCK_INITIALIZER):
+ Don't create a compound literal.
+
+ * pthread/pt-alloc.c (initialize_pthread): Cast
+ PTHREAD_MUTEX_INITIALIZER and PTHREAD_COND_INITIALIZER to create a
+ compound literal.
+ * tests/test-1.c (main): Use pthread_mutex_init, not
+ PTHREAD_MUTEX_INIT for mutex initialization
+
+ * sysdeps/generic/pt-barrier-init.c (pthread_barrier_init): Remove
+ assert. Copy ATTR if non-defaults are used.
+ * sysdeps/generic/pt-cond-init.c (pthread_cond_init): Include
+ <string.h>. Remove assert. Copy ATTR if non-defaults are used.
+ * sysdeps/generic/pt-mutex-init.c (_pthread_mutex_init): Cast
+ PTHREAD_MUTEX_INITIALIZER to create a compound literal.
+ * sysdeps/generic/pt-rwlock-init.c: Include <string.h>.
+ (_pthread_rwlock_init): Cast __PTHREAD_RWLOCK_INITIALIZER to
+ create a compound literal. Copy ATTR if non-defaults are used.
+
+ * sysdeps/generic/pt-cond-timedwait.c
+ (__pthread_cond_timedwait_internal): Check that ABSTIME->TV_NSEC
+ is valid. Don't shadow ERR. Don't return before cleaning up.
+ * sysdeps/generic/pt-mutex-timedlock.c (pthread_mutex_timedlock):
+ Move after __pthread_mutex_timedlock_internal. Check that
+ ABSTIME->TV_NSEC is valid.
+ * sysdeps/generic/pt-rwlock-timedrdlock.c
+ (pthread_rwlock_timedrdlock): Move after.
+ __pthread_rwlock_timedrdlock_internal.
+ (__pthread_rwlock_timedrdlock_internal): Check that
+ ABSTIME->TV_NSEC is valid.
+ * sysdeps/generic/pt-rwlock-timedwrlock.c
+ (pthread_rwlock_timedwrlock): Move after
+ __pthread_rwlock_timedwrlock_internal.
+ (__pthread_rwlock_timedwrlock_internal): Check that
+ ABSTIME->TV_NSEC is valid.
+ * sysdeps/generic/sem-timedwait.c (__sem_timedwait_internal):
+ Check that TIMEOUT->TV_NSEC is valid before enqueuing the thread.
+
+ * sysdeps/generic/pt-rwlock-rdlock.c
+ (__pthread_rwlock_timedrdlock_internal): Fix declaration.
+
+ * sysdeps/generic/pt-mutex-trylock.c (__pthread_mutex_trylock):
+ Don't return EDEADLK. POSIX does not allow it.
+
+ * sysdeps/mach/pt-timedblock.c (__pthread_timedblock): Calculate
+ the relative timeout without overflowing.
+
+ * sysdeps/mach/hurd/i386/pt-setup.c (stack_setup): Cast THREAD.
+
+2005-05-12 Neal H. Walfield <neal@gnu.org>
+
+ * Makefile (SRCS): Add sem-close.c, sem-destroy.c, sem-getvalue.c,
+ sem-init.c, sem-open.c, sem-post.c, sem-timedwait.c, sem-trywait.c,
+ sem-unlink.c and sem-wait.c.
+ (sysdeps_headers): Add semaphore.h and bits/semaphore.h.
+ * include/semaphore.h: New file.
+ * sysdeps/generic/sem-close.c: New file.
+ * sysdeps/generic/sem-destroy.c: New file.
+ * sysdeps/generic/sem-getvalue.c: New file.
+ * sysdeps/generic/sem-init.c: New file.
+ * sysdeps/generic/sem-open.c: New file.
+ * sysdeps/generic/sem-post.c: New file.
+ * sysdeps/generic/sem-timedwait.c: New file.
+ * sysdeps/generic/sem-trywait.c: New file.
+ * sysdeps/generic/sem-unlink.c: New file.
+ * sysdeps/generic/sem-wait.c: New file.
+ * sysdeps/generic/bits/semaphore.h: New file.
+
+2005-05-04 Neal H. Walfield <neal@gnu.org>
+
+ * Makefile (SRCS): Add pt-thread_dealloc.c.
+ * sysdeps/mach/pt-thread-dealloc.c: New file.
+ * pthread/pt-internal.h (__pthread_thread_dealloc): New
+ declaration.
+ (__pthread_thread_halt): Add parameter NEED_DEALLOC. Update
+ callers.
+ * sysdeps/mach/pt-thread-halt.c (__pthread_thread_halt): Respect
+ new NEED_DEALLOC parameter. Move code which deallocates kernel
+ resources from here ...
+ * sysdeps/mach/pt-thread-dealloc.c (__pthread_thread_dealloc):
+ ...to here.
+ * pthread/pt-create.c (__pthread_create_internal): Call
+ __pthread_thread_dealloc on failure.
+ * pthread/pt-exit.c (pthread_exit): Call __pthread_thread_dealloc.
+
+ * sysdeps/mach/pt-thread-alloc.c (create_wakeupmsg): Call
+ __mach_port_destroy to deallocate the receive right.
+ __mach_port_deallocate won't do it.
+
+ * pthread/pt-detach.c (pthread_detach): Don't call
+ __pthread_thread_halt a second time.
+
+ * sysdeps/mach/hurd/pt-sysdep.c (_cthread_init_routine): Fix
+ declaration.
+ (init_routine): Update declaration and remove gratuitous cast.
+
+2005-05-02 Neal H. Walfield <neal@gnu.org>
+
+ * pthread/pt-alloc.c (__pthread_alloc): Set the thread id to the
+ table index plus one.
+ * pthread/pt-internal.h (__pthread_getid): Index __pthread_threads
+ using THREAD - 1, not THREAD.
+ (__pthread_setid): Likewise.
+ * pthread/pt-create.c (__pthread_create_internal): Likewise.
+
+ * sysdeps/generic/pt-mutex-trylock.c (__pthread_mutex_trylock):
+ When returning EBUSY, don't forget to first unlock MUTEX->__HELD.
+
+2005-04-20 Neal H. Walfield <neal@gnu.org>
+
+ * sysdeps/generic/pt-setschedparam.c: policy's type is int, not
+ int *.
+ * include/pthread/pthread.h: Likewise.
+ Reported by Christopher `Physicman' Bodenstein <cb@physicman.net>.
+
+2005-01-21 Michael Banck <mbanck@debian.org>
+
+ * Makefile ($(libdir)/libpthread2.a): Install linker script
+ from $(srcdir) instead of current directory.
+ ($(libdir)/libpthread2_pic.a): Likewise.
+
+2005-02-08 Neal H. Walfield <neal@gnu.org>
+
+ * sysdeps/mach/pt-spin.c (__pthread_spin_lock): Make a weak alias
+ to _pthread_spin_lock.
+ * sysdeps/posix/pt-spin.c (__pthread_spin_lock): Likewise.
+
+2005-01-18 Neal H. Walfield <neal@gnu.org>
+
+ * sysdeps/mach/hurd/pt-sysdep.h (__pthread_stack_dealloc): Add
+ __always_inline__ attribute.
+ * sysdeps/l4/hurd/pt-sysdep.h (_pthread_self): Likewise.
+ (__pthread_stack_dealloc): Likewise.
+
+2005-01-12 Pietro Ferrari <pietro@bastardi.net>
+
+ * include/pthread/pthread.h (pthread_spin_destroy): Replace extern
+ inline with extern __inline.
+ (pthread_spin_init): Likewise.
+ (pthread_spin_lock): Likewise.
+ (pthread_spin_trylock): Likewise.
+ (pthread_spin_unlock): Likewise.
+ * sysdeps/mach/bits/spin-lock.h (__pthread_spin_lock): Likewise.
+ * sysdeps/i386/bits/spin-lock.h (__pthread_spin_lock): Likewise.
+ * sysdeps/generic/bits/mutex.h (__pthread_mutex_trylock):
+ Likewise.
+ (pthread_mutex_lock): Likewise.
+ (pthread_mutex_trylock): Likewise.
+ * sysdeps/generic/bits/pthread.h (pthread_equal): Likewise.
+
+2003-08-17 Marcus Brinkmann <marcus@gnu.org>
+
+ * sysdeps/hurd/pt-key.h (PTHREAD_KEY_MEMBERS): Change type of
+ THREAD_SPECIFICS to hurd_ihash_t.
+ * sysdeps/hurd/pt-setspecific.c (pthread_setspecific): Call
+ hurd_ihash_create instead ihash_create, and hurd_ihash_add instead
+ ihash_add.
+ * sysdeps/hurd/pt-getspecific.c (pthread_getspecific): Call
+ hurd_ihash_find instead of ihash_find.
+ * sysdeps/hurd/pt-destroy-specific.c (__pthread_destroy_specific):
+ Call hurd_ihash_find instead of ihash_find, hurd_ihash_remove
+ instead of ihash_remove, and hurd_ihash_free instead of
+ ihash_free.
+
+2003-08-03 Marco Gerards <metgerards@student.han.nl>
+
+ * Makefile (install): Do not install from $(srcdir).
+
+2002-11-26 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-create.c [HAVE_USELOCAL]: Include <locale.h>.
+ (entry_point) [HAVE_USELOCALE]: Initialize the thread to the
+ global locale.
+
+2002-11-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/mach/hurd/i386/pt-setup.c (__pthread_setup): Fix last
+ change.
+
+2002-11-18 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/mach/pt-wakeup.c (__pthread_wakeup): Use the size of
+ THREAD->wakeupmsg which may not be a mach_msg_header_t.
+
+ * sysdeps/generic/pt-mutex-timedlock.c
+ (__pthread_mutex_timedlock_internal): Really test for equality.
+ * 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-cond-timedwait.c
+ (__pthread_cond_timedwait_internal): On timeout, remove our thread
+ structure from the wait queue if necessary.
+
+ * sysdeps/l4/pt-start.c (__pthread_start): Call L4_Myself, not
+ __mach_thread_self.
+
+ * sysdeps/mach/hurd/i386/pt-setup.c: Include <mach.h>.
+ (__pthread_setup): Do not leak references from __mach_thread_self.
+ * sysdeps/mach/hurd/pt-docancel.c (__pthread_do_cancel): Likewise.
+ * sysdeps/mach/hurd/pt-sysdep.h (_pthread_self): Likewise.
+ * sysdeps/mach/pt-thread-alloc.c (__pthread_thread_alloc): Likewise.
+ * sysdeps/mach/pt-thread-start.c (__pthread_thread_start): Likewise.
+
+ * sysdeps/mach/pt-start.c: Remove dead file.
+
+2002-11-09 Roland McGrath <roland@frob.com>
+
+ * include/pthread/pthread.h: Avoid `__thread' as an identifier,
+ since it might be a keyword.
+
+2002-11-02 Alfred M. Szmidt <ams@kemisten.nu>
+
+ * sysdeps/generic/pt-key-delete.c, sysdeps/hurd/pt-key-delete.c
+ (pthread_key_delete): Renamed from pthread_key_destroy.
+ Reported by Michael Koch <konqueror@gmx.de>
+
+2002-10-12 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/hurd/pt-destroy-specific.c (__pthread_destroy_specific):
+ Only call the destructor if there is one set.
+
+2002-10-10 Neal H. Walfield <neal@cs.uml.edu>
+
+ * libpthread.a: It is _cthread_init_routine, not _cthread_init.
+ Add -lihash.
+ * libpthread_pic.a: Likewise but add -lihash_pic.
+
+ * tests/Makefile (%-static): New rule.
+ (CHECK_PROGS): Build static test programs.
+
+2002-10-10 Neal H. Walfield <neal@cs.uml.edu>
+
+ * Makefile (install): Add $(libdir)/libpthread2.a and
+ $(libdir)/libpthread2_pic.a.
+ (.PHONY): Likewise.
+ ($(libdir)/libpthread2.a): New rule.
+ ($(libdir)/libpthread2_pic.a): Likewise.
+
+ * libpthread_pic.a: New file.
+ * libpthread.a: New file.
+
+2002-10-10 Neal H. Walfield <neal@cs.uml.edu>
+
+ * Makefile (SRCS): Remove pt-errno.c.
+ * sysdeps/mach/hurd/pt-errno.c: Removed.
+ * sysdeps/l4/hurd/pt-errno.c: Removed.
+
+2002-10-10 Neal H. Walfield <neal@cs.uml.edu>
+
+ * include/lock-intern.h: Removed. Use the one provided by glibc.
+ * Makefile (sysdeps_headers): Remove lock-intern.h.
+
+2002-10-10 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/mach/hurd/i386/pt-setup.c (stack_setup): Save the thread
+ pointer using the __hurd_threadvar routines; not a the top of the
+ stack.
+ * sysdeps/mach/hurd/pt-sysdep.h (_HURD_THREADVAR_THREAD): New
+ marcro.
+ (_pthread_self): Use __hurd_threadvar_location to access the self
+ pointer.
+ * sysdeps/mach/hurd/pt-sysdep.c (init_routine): Likewise. Update
+ the calculation of __hurd_threadvar_stack_offset.
+
+2002-10-10 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-alloc.c (alloc_init): Removed.
+ (__pthread_alloc): Allocate __pthread_threads lazily.
+
+ * sysdeps/hurd/pt-getspecific.c (pthread_getspecific): Add an
+ assert.
+
+2002-09-28 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/pt-cond-timedwait.c
+ (__pthread_cond_timedwait_internal): Add definition.
+ * sysdeps/generic/pt-rwlock-rdlock.c
+ (__pthread_rwlock_timedrdlock_internal): Define this ...
+ (__pthread_mutex_timedlock_internal): ... not this.
+ * sysdeps/generic/pt-rwlock-wrlock.c
+ (__pthread_rwlock_timedwrlock_internal): Add an extern.
+
+2002-09-28 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/mach/hurd/pt-sysdep.h (_pthread_self): Assert that
+ __pthread_threads is initialized.
+
+ (__pthread_self): Beautify.
+
+2002-09-28 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/mach/hurd/pt-sysdep.c (init_routine): Only call
+ __pthread_initialize once.
+
+2002-09-28 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/pt-cond-init.c (pthread_cond_init): Only assert
+ that ATTR->pshared is PTHREAD_PROCESS_PRIVATE if ATTR is not NULL.
+ Reported by Manuel Menal <mmenal@netcourrier.com>.
+
+2002-09-27 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/bits/mutex.h (__PTHREAD_MUTEX_INITIALIZER):
+ Initialize the LOCKS member of struct __pthread_mutex to 0, not
+ NULL.
+
+2002-09-27 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/bits/mutex.h (struct __pthread_mutex): New
+ field, cthreadcompat1: cthreads does not initialize the third
+ field of a mutex and as a result, neither does glibc. Avoid
+ this pit.
+ (__PTHREAD_MUTEX_INITIALIZER): Initialize cthreadcompat1 to 0.
+
+2002-09-27 Neal H. Walfield <neal@cs.uml.edu>
+
+ * Makefile ($(addprefix $(includedir)/, $(sysdeps_headers))): Do
+ not prepend ${srcdir}.
+
+2002-09-27 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-internal.h (__pthread_enqueue): New function.
+ (__pthread_dequeue): New function.
+ (__pthread_queue_iterate): New macro.
+ (__pthread_dequeuing_iterate): New macro.
+
+ * sysdeps/generic/pt-barrier-wait.c (pthread_barrier_wait): Use
+ the new convenience functions.
+ * sysdeps/generic/pt-cond-brdcast.c (pthread_cond_broadcast):
+ Likewise.
+ * sysdeps/generic/pt-cond-signal.c (cond_signal): Likewise.
+ * sysdeps/generic/pt-cond-timedwait.c
+ (__pthread_cond_timedwait_internal): Likewise.
+ * sysdeps/generic/pt-mutex-timedlock.c
+ (__pthread_mutex_timedlock_internal): Likewise.
+ * sysdeps/generic/pt-mutex-unlock.c (__pthread_mutex_unlock):
+ Likewise.
+ * 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):
+ Likewise.
+
+ * pthread/pt-alloc.c (initialize_pthread): Initialize the next and
+ prevp pointers to 0.
+
+2002-09-27 Neal H. Walfield <neal@cs.uml.edu>
+
+ * tests/Makefile (CFLAGS): New variable.
+
+2002-09-27 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/pt-mutex-timedlock.c (pthread_mutex_timedlock):
+ Call __pthread_mutex_timedlock_internal, not
+ pthread_mutex_timedlock.
+
+2002-09-27 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-internal.h (__pthread_rwlock_unlock): Remove obsolete
+ definition.
+ * pthread/pt-alloc.c (__pthread_alloc): Use pthread_rwlock_wrlock
+ and pthread_rwlock_unlock, not __pthread_rwlock_wrlock and
+ __pthread_rwlock_unlock.
+ * pthread/pt-create.c (__pthread_create_internal): Use
+ pthread_rwlock_rdlock and pthread_rwlock_unlock, not
+ __pthread_rwlock_rdlock and __pthread_rwlock_unlock.
+ * sysdeps/generic/pt-cond-timedwait.c (pthread_cond_timedwait):
+ Call __pthread_cond_timedwait_internal, not
+ __pthread_cond_timedwait.
+
+2002-09-27 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-internal.h (__pthread_mutex_timedlock): Remove
+ definition.
+ (__pthread_rwlock_timedrdlock): Likewise.
+ (__pthread_rwlock_timedwrlock): Likewise.
+ (__pthread_cond_timedwait): Likewise.
+ * include/pthread/pthread.h (pthread_mutex_timedlock): Remove
+ verbage about GNU extension.
+ (pthread_cond_timedwait): Likewise.
+ (pthread_rwlock_timedrdlock): Likewise.
+ (pthread_rwlock_timedwrlock): Likewise.
+
+ * sysdeps/generic/pt-rwlock-timedrdlock.c
+ (__pthread_rwlock_timedrdlock_internal): Renamed from
+ __pthread_rwlock_timedrdlock.
+ (pthread_rwlock_timedrdlock): New function. Remove weak alias.
+ * sysdeps/generic/pt-rwlock-rdlock.c
+ (__pthread_mutex_timedlock_internal): New definition.
+ (pthread_rwlock_rdlock): Renamed from __pthread_rwlock_rdlock.
+ Use __pthread_rwlock_timedlock_internal. Remove weak alias.
+
+ * sysdeps/generic/pt-cond-timedwait.c
+ (__pthread_cond_timedwait_internal): Rename from
+ __pthread_cond_timedwait. Remove weak aliases.
+ (pthread_cond_timedwait): New function.
+ * sysdeps/generic/pt-cond-wait.c
+ (__pthread_cond_timedwait_internal): New definition.
+ (pthread_cond_wait): Use it.
+
+ * sysdeps/generic/pt-mutex-timedlock.c
+ (__pthread_mutex_timedlock_internal): Rename from
+ __pthread_mutex_timedlock. Remove weak alias.
+ (pthread_mutex_timedlock): New function.
+ * sysdeps/generic/pt-mutex-lock.c
+ (__pthread_mutex_timedlock_internal): New definition.
+ (__pthread_mutex_lock): Use it.
+
+ * sysdeps/generic/pt-rwlock-timedwrlock.c
+ (__pthread_rwlock_timedwrlock_internal): Rename from
+ __pthread_rwlock_timedwrlock.
+ (pthread_rwlock_timedwrlock): New function. Remove weak alias.
+ * sysdeps/generic/pt-rwlock-wrlock.c
+ (__pthread_mutex_timedlock_internal): New definition.
+ (pthread_rwlock_wrlock): Renamed from __pthread_rwlock_wrlock.
+ Use __pthread_rwlock_timedlock_internal. Remove weak alias.
+
+ * sysdeps/generic/pt-rwlock-tryrdlock.c
+ (pthread_rwlock_tryrdlock): Rename from
+ __pthread_rwlock_tryrdlock. Remove weak alias.
+ * sysdeps/generic/pt-rwlock-trywrlock.c
+ (pthread_rwlock_trywrlock): Rename from
+ __pthread_rwlock_trywrlock. Remove weak alias.
+
+ * sysdeps/hurd/pt-kill.c (pthread_kill): Rename from
+ __pthread_kill. Remove weak alias.
+ * sysdeps/generic/pt-atfork.c (pthread_atfork): Rename from
+ __pthread_atfork. Remove weak alias.
+
+2002-09-27 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-internal.h (__pthread_create_internal): Renamed from
+ __pthread_create. Updated all callers. Suggested by Roland
+ McGrath.
+
+2002-09-27 Neal H. Walfield <neal@cs.uml.edu>
+
+ * Makefile: New file.
+ * tests/Makefile: New file.
+
+2002-09-27 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/bits/barrier.h: Include <bits/spin-lock.h>.
+ (struct __pthread_barrier): Change lock to a __pthread_spinlock_t:
+ pthread_spinlock_t may not be defined in this context.
+
+2002-09-26 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/bits/once.h (__PTHREAD_ONCE_INIT): Be standards
+ compliant: do not cast the result.
+
+2002-09-26 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-join.c (pthread_join): Fix typo in previous change.
+
+2002-09-26 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/bits/barrier.h (struct __pthread_barrier): Add
+ new members attr and data.
+ * sysdeps/generic/pt-barrier-init.c: Inlucde <string.h>.
+ (pthread_barrier_init): Set *BARRIER to zero.
+
+ * sysdeps/generic/bits/condition.h (__PTHREAD_COND_INITIALIZER):
+ Initialize all fields.
+
+ * sysdeps/generic/bits/mutex.h (__pthread_mutex): Rename
+ cthread_compat1 to data.
+ (pthread_mutex_destroy): Avoid
+ inline version if __MUTEX->data is not NULL.
+ (__pthread_mutex_lock): Likewise.
+ (__pthread_mutex_trylock): Likewise.
+
+ * sysdeps/generic/bits/rwlock.h: New member __attr.
+ (__PTHREAD_RWLOCK_INITIALIZER): Initialize it to zero.
+ (pthread_rwlock_destroy): Avoid inline version if __RWLOCK->__data
+ is not NULL.
+
+2002-09-26 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-join.c (pthread_join): Protect PTHREAD->state_lock
+ inconsistency due to cancelation.
+
+2002-09-26 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/bits/pthread.h (pthread_equal): Change from
+ static inline to extern inline.
+ * sysdeps/generic/pt-equal.c: New file.
+ * Makefile.am (libpthread_a_SOURCES): Add pt-equal.c.
+
+2002-09-26 Neal H. Walfield <neal@cs.uml.edu>
+
+ * include/pthread/pthread.h (pthread_mutex_getprioceiling): New
+ definition.
+ (pthread_mutex_setprioceiling): New definition.
+ (pthread_getschedparam): New definition.
+ (pthread_setschedparam): New definition.
+ (pthread_setschedprio): New definition.
+
+ * sysdeps/generic/pt-getschedparam.c: New file.
+ * sysdeps/generic/pt-mutex-getprioceiling.c: New file.
+ * sysdeps/generic/pt-mutex-setprioceiling.c: New file.
+ * sysdeps/generic/pt-setschedparam.c: New file.
+ * sysdeps/generic/pt-setschedprio.c: New file.
+ * Makefile.am (libpthread_a_SOURCES): Add pt-getschedparam.c,
+ pt-mutex-getprioceiling.c, pt-mutex-setprioceiling.c,
+ pt-setschedparam.c and pt-setschedprio.c.
+
+2002-09-26 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/Makefile.glibc: Removed.
+ * pthread/pthread.patch: Removed.
+
+2002-09-26 Neal H. Walfield <neal@cs.uml.edu>
+
+ * include/pthread/pthread.h (pthread_getcpuclockid): New
+ definition.
+ * sysdeps/generic/pt-getcpuclockid.c: New file.
+ * Makefile.am (libpthread_a_SOURCES): Add pt-getcpuclockid.c.
+
+2002-09-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * include/pthread/pthread.h (pthread_kill): New definition.
+ * sysdeps/hurd/pt-kill.c (__pthread_kill): New file.
+ * Makefile.am (libpthread_a_SOURCES): Add pt-kill.c.
+
+ * tests/Makefile.am (check_PROGRAMS): Add test-16.
+ (TEST_COUNT): Bump to 16.
+ (MOSTLYCLEANFILES): Add test-16.out.
+ (test_16_SOURCES): New variable.
+
+ * tests/test-16.c: New file.
+
+2002-09-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/pt-attr.c: Include <sched.h>.
+
+2002-09-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * tests/Makefile.am (check_PROGRAMS): Remove test-5.
+ Unintentionally checked in.
+
+2002-09-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * include/pthread/pthread.h (pthread_atfork): New definition.
+ * sysdeps/generic/pt-atfork.c: New file.
+
+ * Makefile.am (libpthread_a_SOURCES): Add pt-atfork.c.
+
+2002-09-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-internal.h (__pthread_rwlock_rdlock): New definition.
+ (__pthread_rwlock_timedrdlock): New definition.
+ (__pthread_rwlock_wrlock): New definition.
+ (__pthread_rwlock_timedwrlock): New definition.
+ (__pthread_rwlock_unlock): New definition.
+
+2002-09-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-internal.h (__pthread_timedblock): New definition.
+ * sysdeps/mach/pt-timedblock.c: New file.
+
+ * include/pthread/pthread.h (pthread_mutex_timedlock): New
+ definition.
+ (pthread_cond_timedwait): Enable unconditionally.
+ (pthread_rwlock_timedrdlock): New definition.
+ (pthread_rwlock_timedwrlock): New definition.
+
+ * sysdeps/generic/pt-mutex-timedlock.c: New file.
+ * sysdeps/generic/pt-mutex-lock.c (__pthread_mutex_lock):
+ Reimplement in terms of __pthread_mutex_timedlock.
+
+ * sysdeps/generic/pt-cond-timedwait.c: New file.
+ * sysdeps/generic/pt-cond-wait.c (pthread_cond_wait): Reimplement
+ in terms of pthread_cond_timedwait.
+
+ * sysdeps/generic/pt-rwlock-timedrdlock.c: New file.
+ * sysdeps/generic/pt-rwlock-rdlock.c
+ (__pthread_rwlock_rdlock): Reimplement in terms of
+ __pthread_rwlock_timedrdlock.
+
+ * sysdeps/generic/pt-rwlock-timedwrlock.c: New file.
+ * sysdeps/generic/pt-rwlock-wrlock.c (__pthread_rwlock_wrlock):
+ Reimplement in terms of __pthread_rwlock_timedwrlock.
+
+ * sysdeps/generic/pt-cond-signal.c (cond_signal): Clear the
+ previous pointer of the thread which we decide to wake up.
+
+ * Makefile.am (libpthread_a_SOURCES): Add pt-mutex-lock.c,
+ pt-mutex-trylock.c, pt-mutex-timedlock.c, pt-rwlock-timedrdlock.c,
+ pt-rwlock-timedwrlock.c, pt-cond-timedwait.c and pt-timedblock.c.
+
+ * tests/Makefile.am (check_PROGRAMS): Add test-13, test-14 and
+ test-15.
+ (TEST_COUNT): Bump to 15.
+ (MOSTLYCLEANFILES): Add test-13.out, test-14.out and test-15.out.
+ (test_13_SOURCES): New variable.
+ (test_14_SOURCES): New variable.
+ (test_15_SOURCES): New variable.
+ * tests/test-13.c: New file.
+ * tests/test-14.c: New file.
+ * tests/test-15.c: New file.
+
+2002-09-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * include/pthread/pthread.h: Include <bits/condition-attr.h>
+ (pthread_condattr_t): New type.
+ (pthread_condattr_init): New definition.
+ (pthread_condattr_destroy): New definition.
+ (pthread_condattr_getclock): New definition.
+ (pthread_condattr_setclock): New definition.
+ (pthread_condattr_getpshared): New definition.
+ (pthread_condattr_setpshared): New definition.
+ (pthread_cond_init): New definition.
+ (pthread_cond_destroy): New definition.
+ * pthread/pt-internal.h (__pthread_default_condattr): New
+ definition.
+
+ * sysdeps/generic/pt-cond-destroy.c: New file.
+ * sysdeps/generic/pt-cond-init.c: New file.
+ * sysdeps/generic/pt-cond.c: New file.
+ * sysdeps/generic/pt-condattr-destroy.c: New file.
+ * sysdeps/generic/pt-condattr-getclock.c: New file.
+ * sysdeps/generic/pt-condattr-getpshared.c: New file.
+ * sysdeps/generic/pt-condattr-init.c: New file.
+ * sysdeps/generic/pt-condattr-setclock.c: New file.
+ * sysdeps/generic/pt-condattr-setpshared.c: New file.
+ * sysdeps/generic/bits/condition-attr.h: New file.
+ * Makefile.am (libpthread_a_SOURCES): Add pt-cond.c,
+ pt-condattr-init.c, pt-condattr-destroy.c, pt-condattr-getclock.c,
+ pt-condattr-getpshared.c, pt-condattr-setclock.c,
+ pt-condattr-setpshared.c, pt-cond-destroy.c and pt-cond-init.c.
+ * headers.m4 (hurd_SYSDEPS): Add bits/condition-attr.h.
+
+2002-09-24 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/pt-cond-wait.c (pthread_cond_wait): If canceled,
+ be sure to disconnect ourself from the waiters' queue.
+
+2002-09-24 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/mach/hurd/pt-docancel.c (__pthread_do_cancel): Before
+ overwriting the thread's state, abort any system call in progress.
+
+2002-09-24 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/pt-cond-wait.c (pthread_cond_wait): Rewrite
+ cancelation support.
+
+2002-09-24 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/pt-cond-wait.c (pthread_cond_wait): Before
+ returning add a cancelation point.
+
+2002-09-24 Neal H. Walfield <neal@cs.uml.edu>
+
+ * include/pthread/pthread.h (pthread_setconcurrency): New
+ definition.
+ (pthread_getconcurrency): New definition.
+
+ * pthread/pt-internal.h (__pthread_concurrency): New definition.
+
+ * sysdeps/generic/pt-getconcurrency.c: New file.
+ * sysdeps/generic/pt-setconcurrency.c: New file.
+
+ * Makefile.am (libpthread_a_SOURCES): Add pt-getconcurrency.c and
+ pt-setconcurrency.c.
+
+ * tests/Makefile.am (check_PROGRAMS): Add test-12.
+ (TEST_COUNT): Bump to 12.
+ (MOSTLYCLEANFILES): Add test-12.out.
+ (test_12_SOURCES): New variable.
+ * tests/test-12.c: New file.
+
+2002-09-24 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/hurd/pt-key.h (__pthread_key_lock_ready): New function.
+ Initialize the __pthread_key_lock.
+ * sysdeps/hurd/pt-key-create.c (__pthread_key_lock): Do not
+ initialize it.
+ (pthread_key_create): Do it here by calling
+ __pthread_key_lock_ready.
+ * sysdeps/hurd/pt-key-delete.c (pthread_key_destory): Call
+ __pthread_key_lock_ready.
+ * sysdeps/hurd/pt-destroy-specific.c (__pthread_destroy_specific):
+ Likewise.
+
+2002-09-24 Neal H. Walfield <neal@cs.uml.edu>
+
+ * include/pthread/pthread.h: Include <bits/rwlock-attr.h>.
+ (pthread_rwlockattr_t): New type.
+ (pthread_rwlockattr_init): New definition.
+ (pthread_rwlockattr_destroy): New definition.
+ (pthread_rwlockattr_getpshared): New definition.
+ (pthread_rwlockattr_setpshared): New definition.
+
+ Include <bits/rwlock.h>.
+ (pthread_rwlock_t): New type.
+
+ (pthread_rwlock_init): New definition.
+ (pthread_rwlock_destroy): New definition.
+ (pthread_rwlock_rdlock): New definition.
+ (pthread_rwlock_tryrdlock): New definition.
+ (pthread_rwlock_wrlock): New definition.
+ (pthread_rwlock_trywrlock): New definition.
+ (pthread_rwlock_unlock): New definition.
+
+ * pthread/pt-internal.h (pthread_rwlock_t): Remove macro.
+ (__pthread_rwlock_rlock): Remove macro.
+ (__pthread_rwlock_wlock): Remove macro.
+ (__pthread_rwlock_unlock): Remove macro.
+
+ (__pthread_default_rwlockattr): New definition.
+
+ * pthread/pt-alloc.c (__pthread_alloc): Use
+ __pthread_rwlock_wrlock, not __pthread_rwlock_wlock.
+ * pthread/pt-create.c (__pthread_create): Use
+ __pthread_rwlock_rdlock, not __pthread_rwlock_rlock.
+
+ * sysdeps/generic/pt-rwlock-attr.c: New file.
+ * sysdeps/generic/pt-rwlock-destroy.c: New file.
+ * sysdeps/generic/pt-rwlock-init.c: New file.
+ * sysdeps/generic/pt-rwlock-rdlock.c: New file.
+ * sysdeps/generic/pt-rwlock-tryrdlock.c: New file.
+ * sysdeps/generic/pt-rwlock-trywrlock.c: New file.
+ * sysdeps/generic/pt-rwlock-unlock.c: New file.
+ * sysdeps/generic/pt-rwlock-wrlock.c: New file.
+ * sysdeps/generic/pt-rwlockattr-destroy.c: New file.
+ * sysdeps/generic/pt-rwlockattr-getpshared.c: New file.
+ * sysdeps/generic/pt-rwlockattr-init.c: New file.
+ * sysdeps/generic/pt-rwlockattr-setpshared.c: New file.
+ * sysdeps/generic/bits/rwlock-attr.h: New file.
+ * sysdeps/generic/bits/rwlock.h: New file.
+
+ * headers.m4 [hurd_SYSDEPS]: Add bits/rwlock.h and
+ bits/rwlock-attr.h.
+
+ * Makefile.am (libpthread_a_SOURCES): Add pt-rwlock-attr.c,
+ pt-rwlockattr-init.c, pt-rwlockattr-destroy.c,
+ pt-rwlockattr-getpshared.c, pt-rwlockattr-setpshared.c,
+ pt-rwlock-init.c, pt-rwlock-destroy.c, pt-rwlock-rdlock.c,
+ pt-rwlock-tryrdlock.c, pt-rwlock-trywrlock.c, pt-rwlock-wrlock.c
+ and pt-rwlock-unlock.c.
+
+ * tests/Makefile.am (check_PROGRAMS): Add test-11.
+ (TEST_COUNT): Bump to 11.
+ (MOSTLYCLEANFILES): Add test-11.out.
+ (test_11_SOURCES): New variable.
+ * tests/test-11.c: New file.
+
+2002-09-24 Neal H. Walfield <neal@cs.uml.edu>
+
+ * Makefile.am (SYSDEPS) [L4]: Removed crt0.c.
+
+ * crt0.c: Moved to ../libc/crt0.c.
+
+2002-09-23 Neal H. Walfield <neal@cs.uml.edu>
+
+ * Makefile.am (libpthread_a_SOURCES): Add pt-mutexattr.c,
+ pt-mutexattr-destroy.c, pt-mutexattr-init.c,
+ pt-mutexattr-getprioceiling.c, pt-mutexattr-getprotocol.c,
+ pt-mutexattr-getpshared.c, pt-mutexattr-gettype.c,
+ pt-mutexattr-setprioceiling.c, pt-mutexattr-setprotocol.c,
+ pt-mutexattr-setpshared.c, pt-mutexattr-settype.c,
+ pt-mutex-init.c, pt-mutex-destroy.c and pt-mutex-trylock.c.
+
+ * headers.m4 [hurd_SYSDEPS]: Add bits/mutex-attr.h.
+
+ * include/pthread/pthread.h: Include <bits/mutex-attr.h>.
+ (__pthread_mutex_protocol): New enumeration.
+ (__pthread_mutex_type): New enumeration.
+ (pthread_mutexattr_t): New type.
+ (pthread_mutexattr_init): New definition.
+ (pthread_mutexattr_destroy): New definition.
+ (pthread_mutexattr_getprioceiling): New definition.
+ (pthread_mutexattr_setprioceiling): New definition.
+ (pthread_mutexattr_getprotocol): New definition.
+ (pthread_mutexattr_setprotocol): New definition.
+ (pthread_mutexattr_getpshared): New definition.
+ (pthread_mutexattr_setpshared): New definition.
+ (pthread_mutexattr_gettype): New definition.
+ (pthread_mutexattr_settype): New definition.
+
+ * pthread/pt-internal.h (__pthread_default_mutexattr): New
+ definition.
+
+ * sysdeps/generic/bits/mutex.h: Include <bits/mutex-attr.h>.
+ (struct __pthread_mutex): Add member OWNER and member LOCKS to
+ support error checking and recursive mutexes. Renamed __attr to
+ attr, updated users.
+ (pthread_mutexattr_t): Removed.
+ (__PTHREAD_MUTEX_INITIALIZER): Add initializers for new members.
+ (pthread_mutex_init): If ATTR, call _pthread_mutex_init.
+ (pthread_mutex_destroy): If __MUTEX has an attribute, call
+ _pthread_mutex_destroy.
+ * sysdeps/generic/pt-mutex-lock.c (__pthread_mutex_lock): Grok
+ mutex attribute.
+ * sysdeps/generic/pt-mutex-unlock.c (__pthread_mutex_unlock):
+ Likewise.
+ Add a weak alias to _pthread_mutex_unlock.
+
+ * sysdeps/generic/pt-mutex-destroy.c: New file.
+ * sysdeps/generic/pt-mutex-init.c: New file.
+ * sysdeps/generic/pt-mutex-trylock.c: New file.
+ * sysdeps/generic/pt-mutexattr-destroy.c: New file.
+ * sysdeps/generic/pt-mutexattr-getprioceiling.c: New file.
+ * sysdeps/generic/pt-mutexattr-getprotocol.c: New file.
+ * sysdeps/generic/pt-mutexattr-getpshared.c: New file.
+ * sysdeps/generic/pt-mutexattr-gettype.c: New file.
+ * sysdeps/generic/pt-mutexattr-init.c: New file.
+ * sysdeps/generic/pt-mutexattr-setprioceiling.c: New file.
+ * sysdeps/generic/pt-mutexattr-setprotocol.c: New file.
+ * sysdeps/generic/pt-mutexattr-setpshared.c: New file.
+ * sysdeps/generic/pt-mutexattr-settype.c: New file.
+ * sysdeps/generic/pt-mutexattr.c: New file.
+ * sysdeps/generic/bits/mutex-attr.h: New file.
+
+ * tests/Makefile.am (AM_LDFLAGS): Add `-u__pthread_mutex_trylock
+ -u__pthread_mutex_unlock -u__pthread_mutex_unlock'.
+ (check_PROGRAMS): Add test-9 and test-10.
+ (TEST_COUNT): Bump to 10.
+ (MOSTLYCLEANFILES): Add test-9.out and test-10.out.
+ (test_9_SOURCES): New variable.
+ (test_10_SOURCES): Likewise.
+ * tests/test-9.c: New file.
+ * tests/test-10.c: New file.
+
+2002-09-23 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-exit.c (pthread_exit): Call pthread_setcancelstate
+ correctly: NULL is not a legal value for the oldstate parameter.
+
+2002-09-21 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-exit.c: Remove dead code.
+ (pthread_exit): When running the cancelation handlers, disable
+ cancelation.
+
+2002-09-21 Neal H. Walfield <neal@cs.uml.edu>
+
+ * tests/test-5.c (main): Fork a child. Do not dump a core.
+ (thr): Renamed from foo.
+
+2002-09-21 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-initialize.c (__pthread_init): Fully prototype it.
+
+2002-09-21 Neal H. Walfield <neal@cs.uml.edu>
+
+ * Makefile.am (libpthread_a_SOURCES): Add pt-sigmask.c,
+ pt-stack-alloc.c, pt-thread-alloc.c, pt-thread-dealloc.c,
+ pt-thread-start.c, pt-sigstate-init.c, pt-sigstate-destroy.c
+ pt-sigstate.c.
+ Remove pt-stack.c and pt-start.c.
+
+ * pthread/pt-create.c (__pthread_create): Instead of calling
+ __pthread_start, first call __pthread_thread_alloc, then setup the
+ signal state and finally start the thread by calling
+ __pthread_thread_start.
+
+ * pthread/pt-exit.c (pthread_exit): Destroy any signal state by
+ calling __pthread_sigstate_destroy.
+
+ * pthread/pt-sigmask.c: New file.
+
+ * pthread/pt-internal.c (__pthread_thread_halt): New definition to
+ replace __pthread_halt macro. Update all callers.
+ * sysdeps/mach/hurd/pt-sysdep.h (__pthread_halt): Renamed to
+ __pthread_thread_halt and moved from here ...
+ * sysdeps/mach/pt-thread-halt.c: ... to here.
+ * sysdeps/l4/hurd/pt-sysdep.h (__pthread_halt): Renamed to
+ __pthread_thread_halt and moved from here ...
+ * sysdeps/l4/pt-thread-halt.c: ... to here.
+
+ * pthread/pt-internal.h (__pthread_start): Split into
+ __pthread_thread_alloc and __pthread_thread_start. Update all
+ callers.
+ (__pthread_thread_alloc): New definition.
+ (__pthread_thread_start): Likewise.
+ * sysdeps/l4/pt-start.c: Split file into ...
+ * sysdeps/l4/pt-thread-alloc.c: ... this ...
+ * sysdeps/l4/pt-thread-start.c: ... and this.
+ * sysdeps/mach/pt-start.c: Split file into ...
+ * sysdeps/mach/pt-thread-alloc.c: ... this ...
+ * sysdeps/mach/pt-thread-start.c: ... and this.
+
+ * sysdeps/l4/pt-stack.c: Moved from here ...
+ * sysdeps/l4/pt-stack-alloc.c: ... to here.
+ * sysdeps/mach/pt-stack.c: Moved from here ...
+ * sysdeps/mach/pt-stack-alloc.c: ... to here.
+
+ * pt-internal.h: Include <signal.h>.
+ (__pthread_sigstate_init): New definition.
+ (__pthread_sigstate_destroy): Likewise.
+ (__pthread_sigstate): Likewise.
+ * sysdeps/mach/hurd/pt-sigstate-destroy.c: New file.
+ * sysdeps/mach/hurd/pt-sigstate-init.c: New file.
+ * sysdeps/mach/hurd/pt-sigstate.c: New file.
+
+ * sysdeps/mach/hurd/i386/pt-setup.c (__pthread_setup): Setup the
+ initial thread state but only if THREAD is not the main thread.
+
+2002-09-17 Neal H. Walfield <neal@cs.uml.edu>
+
+ Get signals working.
+
+ * sysdeps/mach/hurd/pt-destroy-signal-state.c: Likewise.
+ * sysdeps/mach/hurd/pt-init-signal-state.c: Likewise.
+ * sysdeps/mach/hurd/pt-sigstate.c: Likewise.
+
+
+ * pthread/pt-internal.h: Include <signal.h>.
+ (__pthread_init_signal_state): New definition.
+ (__pthread_destroy_signal_state): Likewise.
+ (__pthread_sigstate): Likewise.
+
+ * pthread/pt-create.c (pthread_create): Call
+ __pthread_init_signal_state (and __pthread_destroy_signal_state on
+ a failure). Also set the new thread's sigmask and pending signal
+ state appropriately.
+
+ * pthread/pt-exit.c (pthread_exit): Call
+ __pthread_destroy_signal_state as appropriate.
+
+2002-09-21 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-alloc.c (__pthread_alloc): Factor out initialization
+ code into ...
+ (initialize_pthread): ... this new function.
+
+ (__pthread_alloc): If reusing a thread structure fails, clean up
+ the mess correctly.
+
+2002-09-21 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-alloc.c (__pthread_alloc): Revert last change.
+
+2002-09-21 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-alloc.c (__pthread_alloc): Remove assert.
+
+2002-09-21 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-initialize.c (__pthread_main): Removed. The added
+ convenience does not help initialization and severely complicates
+ the library if the the main thread calls pthread_exit.
+ (__pthread_init): Remove parameter, thread.
+ (__pthread_initialize): Updated to reflect new semantics.
+ * pthread/pt-alloc.c (alloc_init): Update to new semantics. Do
+ not try to initialize the main thread.
+
+ * pthread/pt-create.c (__pthread_total): The main thread is now
+ created explicitly, initialize to zero.
+
+ * pthread/pt-internal.h (__pthread_num_threads): Add definition.
+ (__pthread_main): Removed.
+
+ * pthread/pt-internal.h (__pthread_create): New definition.
+ * pthread/pt-create.c (pthread_create): Move functionality from
+ here ...
+ (__pthread_create): ... to here.
+ (pthread_create): Use __pthread_create.
+
+ * sysdeps/mach/hurd/pt-sysdep.c (init_routine): Use
+ __pthread_create directly rather than rewriting the functionality
+ here.
+ * sysdeps/l4/hurd/pt-sysdep.c (init_routine): Likewise.
+
+ * sysdeps/mach/pt-start.c (__pthread_start): Do not detect the
+ main thread using __pthread_main. If main thread, set the kernel
+ thread id.
+ * sysdeps/l4/pt-start.c (__pthread_start): Likewise.
+
+2002-09-21 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/l4/hurd/pt-save-self.c (__pthread_save_self): Move
+ functionality from here ...
+ * sysdeps/l4/hurd/i386/pt-setup.c (__pthread_setup): ... to here
+ where it belongs.
+
+ * sysdeps/l4/hurd/pt-sysdep.c (init_routine): Do not save pthread
+ self pointer here, it will be done automatically in
+ __pthread_setup.
+
+ __pthread_save_self is now obsolete.
+
+ * pthread/pt-internal.h (__pthread_save_self): Remove definition.
+ * sysdeps/mach/hurd/pt-save-self.c: Removed file.
+ * sysdeps/l4/hurd/pt-save-self.c: Removed file.
+ * Makefile.am (libpthread_a_SOURCES): Remove pt-save-self.c.
+
+2002-09-21 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-create.c (pthread_create): Do not call
+ __pthread_save_self. This is completely bogus.
+
+ * pthread/pt-internal.h: Permit _pthread_self to be a macro.
+
+ * sysdeps/mach/hurd/pt-sysdep.h (__pthread_self): Renamed from
+ _pthread_self.
+ (_pthread_self): New marcro. Do some sanity checks.
+
+2002-09-21 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/mach/hurd/pt-sysdep.c (init_routine): We cannot use
+ __hurd_threadvar_location with the initial stack. This is
+ completely bogus; removed. Neither can we use the TSD on the new
+ stack: once the initial thread returns to the libc initialization
+ code, libc overwrites it. Thus, we shift the TSD by a pointer and
+ use the first word of the stack to store the self pointer.
+ * sysdeps/mach/hurd/pt-sysdep.h (_HURD_THREADVAR_THREAD): Removed.
+ (_pthread_self): Update to reflect new semantics.
+ * sysdeps/mach/hurd/pt-save-self.c (__pthread_save_self):
+ Likewise.
+ * sysdeps/mach/hurd/i386/pt-setup.c (stack_setup): Likewise.
+
+2002-09-17 Neal H. Walfield <neal@cs.uml.edu>
+
+ * Makefile.am (AM_CPPFLAGS): Add -D_IO_MTSAFE_IO.
+ (SYSDEPS) [MACH]: Add lockfile.c.
+
+ * lockfile.c: Include <cthread.h>.
+
+ * tests/Makefile.am (AM_LDFLAGS): Add -u_cthreads_flockfile to
+ force the inclusion of lockfile.c.
+
+2002-09-16 Neal H. Walfield <neal@cs.uml.edu>
+
+ * tests/test-7.c: Include <stdio.h>.
+
+2002-09-16 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/cthreads-compat.c (__mutex_lock_solid): New function.
+ (__mutex_unlock_solid): Likewise.
+
+ * sysdeps/mach/pt-spin.c: New file.
+ * sysdeps/mach/bits: New directory.
+ * sysdeps/mach/bits/spin-lock.h: New file.
+
+ * sysdeps/generic/bits/mutex.h: Add comments.
+
+ * sysdeps/posix/pt-spin.c (_pthread_spin_lock): Renamed from
+ __pthread_spin_lock. Update weak aliases to point to _pthread_spin
+ lock in lieu of __pthread_spin_lock.
+
+2002-09-16 Neal H. Walfield <neal@cs.uml.edu>
+
+ * Makefile.am (AM_CPPFLAGS): Order more appropriately.
+ (VPATH): Likewise.
+
+2002-09-16 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/bits/spin-lock.h: Move from here ...
+ * sysdeps/i386/bits/spin-lock.h: ... to here.
+
+2002-09-16 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/cthreads-compat.c (__libc_getspecific): New function.
+
+2002-09-16 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/cthreads-compat.c (cthread_keycreate): New function.
+ (cthread_getspecific): Likewise.
+ (cthread_setspecific): Likewise.
+
+2002-09-16 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/bits/pthread.h (pthread_equal): Add comments.
+
+2002-09-16 Neal H. Walfield <neal@cs.uml.edu>
+
+ * tests/test-6.c: Include <stdio.h>.
+ (main): Remove superfluous sleep.
+
+2002-09-16 Neal H. Walfield <neal@cs.uml.edu>
+
+ * Makefile.am (libpthread_a_SOURCES): Add pt-once.c.
+ * headers.m4 [hurd_SYSDEPS]: Add bits/once.h.
+
+ * sysdeps/generic/pt-once.c: New file.
+ * sysdeps/generic/bits/once.h: New file.
+ * sysdeps/i386/bits/memory.h: New file.
+
+ * include/pthread/pthread.h: Include <bits/once.h>.
+ (PTHREAD_ONCE_INIT): New macro.
+ (pthread_once): New definition.
+
+ * tests/Makefile.am (AM_CFLAGS): Set to -Wall.
+ (check_PROGRAMS): Add test-8.
+ (TEST_COUNT): Bump to 8.
+ (MOSTLYCLEANFILES): Add test-8.out.
+ (test_8_SOURCES): New variable.
+
+ * tests/test-8.c (main): New file.
+
+2002-09-15 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/mach/pt-stack.c (__pthread_stack_alloc): If we reach the
+ end of the virtual address space, do not just fail but wrap
+ around.
+
+2002-09-15 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/pt-destroy-specific.c: New file.
+ * sysdeps/generic/pt-getspecific.c: Likewise.
+ * sysdeps/generic/pt-init-specific.c: Likewise.
+ * sysdeps/generic/pt-key-create.c: Likewise.
+ * sysdeps/generic/pt-key-delete.c: Likewise.
+ * sysdeps/generic/pt-key.h: Likewise.
+ * sysdeps/generic/pt-setspecific.c: Likewise.
+ * sysdeps/generic/bits/thread-specific.h: Likewise.
+
+ * sysdeps/hurd: New directory for files that only depend on a Hurd
+ personality (and not the underlying microkernel).
+
+ * sysdeps/hurd/pt-destroy-specific.c: New file.
+ * sysdeps/hurd/pt-getspecific.c: Likewise.
+ * sysdeps/hurd/pt-init-specific.c: Likewise.
+ * sysdeps/hurd/pt-key-create.c: Likewise.
+ * sysdeps/hurd/pt-key-delete.c: Likewise.
+ * sysdeps/hurd/pt-key.h: Likewise.
+ * sysdeps/hurd/pt-setspecific.c: Likewise.
+
+ * Makefile.am (AM_CPPFLAGS): Add -I$(srcdir)/sysdeps/hurd.
+ (VPATH): Add $(srcdir)/sysdeps/hurd.
+ (libpthread_a_SOURCES): Add pt-key.h, pt-destroy-specific.c,
+ pt-init-specific.c, pt-key-create.c, pt-key-delete.c,
+ pt-getspecific.c and pt-setspecific.c.
+
+ * headers.m4 (hurd_SYSDEPS): Add thread_specific.h.
+
+ * include/pthread/pthread.h: Include <bits/thread-specific>.
+ (pthread_key_t): New definition.
+ (pthread_key_create): Likewise.
+ (pthread_key_delete): Likewise.
+ (pthread_getspecific): Likewise.
+ (pthread_setspecific): Likewise.
+
+ * pthread/pt-internal.h: Include <pt-key.h>
+ [! PTHREAD_KEY_MEMBERS]: Define it to be empty.
+ (struct __pthread): Include the value of PTHREAD_KEY_MEMBERS.
+
+ (__pthread_init_specific): New definition.
+ (__pthread_destroy_specific): Likewise.
+
+ * pthread/pt-alloc.c (__pthread_alloc): Call
+ __pthread_init_specific.
+ * pthread/pt-exit.c (pthread_exit): Call
+ __pthread_destroy_specific.
+
+ * tests/Makefile.am (LDADD): Add -lihash.
+ (check_PROGRAMS): Add test-7.
+ (MOSTLYCLEANFILES): Add test-7.out.
+ (TEST_COUNT): Bump to 7.
+ (test_7_SOURCES): New variable.
+ * tests/test-7.c: New file.
+
+2002-09-15 Neal H. Walfield <neal@cs.uml.edu>
+
+ * tests/test-6.c: Improve test; iterate WAIT times over
+ pthread_barrier_wait rather than just once.
+
+2002-09-14 Neal H. Walfield <neal@cs.uml.edu>
+
+ Add support for barrier attributes and barriers.
+
+ * sysdeps/generic/pt-barrier-destroy.c: New file.
+ * sysdeps/generic/pt-barrier-init.c: Likewise.
+ * sysdeps/generic/pt-barrier-wait.c: Likewise.
+ * sysdeps/generic/pt-barrier.c: Likewise.
+ * sysdeps/generic/pt-barrierattr-destroy.c: Likewise.
+ * sysdeps/generic/pt-barrierattr-getpshared.c: Likewise.
+ * sysdeps/generic/pt-barrierattr-init.c: Likewise.
+ * sysdeps/generic/pt-barrierattr-setpshared.c: Likewise.
+ * sysdeps/generic/bits/barrier-attr.h: Likewise.
+ * sysdeps/generic/bits/barrier.h: Likewise.
+ * sysdeps/generic/bits/thread-barrier.h: Likewise.
+
+ * Makefile.am (libpthread_a_SOURCES): Added pt-barrier-destroy.c,
+ pt-barrier-init.c, pt-barrier-wait.c, pt-barrier.c,
+ pt-barrierattr-destroy.c, pt-barrierattr-init.c,
+ pt-barrierattr-getpshared.c and pt-barrierattr-setpshared.c.
+
+ * headers.m4 (hurd_SYSDEPS): Added bits/barrier-attr.h and
+ bits/barrier.h.
+
+ * include/pthread/pthread.h: Include <bits/barrier-attr.h> and
+ <bits/barrier.h>.
+
+ (__pthread_process_shared): New enumeration.
+ (PTHREAD_PROCESS_PRIVATE): New macro.
+ (PTHREAD_PROCESS_SHARED): Likewise.
+ (pthread_barrierattr_t): New typedef.
+
+ (pthread_barrierattr_init): New definition.
+ (pthread_barrierattr_destroy): Likewise.
+ (pthread_barrierattr_getpshared): Likewise.
+ (pthread_barrierattr_setpshared): Likewise.
+
+ (pthread_barrier_t): New typedef.
+ (PTHREAD_BARRIER_SERIAL_THREAD): New macro.
+ (pthread_barrier_init): New declaration.
+ (pthread_barrier_destroy): Likewise.
+ (pthread_barrier_wait): Likewise.
+
+ * pthread/pt-internal.h (__pthread_default_barrierattr): New
+ definition.
+
+ * tests/test-6.c: New file.
+ * tests/Makefile.am (check_PROGRAMS): Add test-6.
+ (MOSTLYCLEANFILES): Add test-6.out.
+ (test_6_SOURCES): New variable.
+ (TEST_COUNT): Update.
+
+2002-09-12 Neal H. Walfield <neal@cs.uml.edu>
+
+ * tests/Makefile.am
+ (check_PROGRAMS): Add test test-3 and test-5.
+ (MOSTLYCLEANFILES): Add test-3.out, test-4.out and test-5.out.
+ (TEST_COUNT): Change to 5.
+ (test_3_SOURCES): New variable.
+ (test_5_SOURCES): New variable.
+ (check): Fix typo.
+
+ * tests/test-3.c: New file.
+ * tests/test-4.c: New file.
+ * tests/test-5.c: New file.
+
+2002-09-12 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/mach/hurd/pt-attr-setstackaddr.c: New file.
+ * sysdeps/mach/hurd/pt-attr-setstacksize.c: New file.
+ * sysdeps/mach/hurd/i386/pt-setup.c: New file.
+
+ * sysdeps/mach/hurd/i386/pt-setup.c (stack_setup): Setup the stack
+ guard if necessary.
+
+2002-09-12 Neal H. Walfield <neal@cs.uml.edu>
+
+ Generic attributes.
+
+ * sysdeps/generic/pt-attr-destroy.c: New file.
+ * sysdeps/generic/pt-attr-getdetachstate.c: New file.
+ * sysdeps/generic/pt-attr-getguardsize.c: New file.
+ * sysdeps/generic/pt-attr-getinheritsched.c: New file.
+ * sysdeps/generic/pt-attr-getschedparam.c: New file.
+ * sysdeps/generic/pt-attr-getschedpolicy.c: New file.
+ * sysdeps/generic/pt-attr-getscope.c: New file.
+ * sysdeps/generic/pt-attr-getstack.c: New file.
+ * sysdeps/generic/pt-attr-getstackaddr.c: New file.
+ * sysdeps/generic/pt-attr-getstacksize.c: New file.
+ * sysdeps/generic/pt-attr-init.c: New file.
+ * sysdeps/generic/pt-attr-setdetachstate.c: New file.
+ * sysdeps/generic/pt-attr-setguardsize.c: New file.
+ * sysdeps/generic/pt-attr-setinheritsched.c: New file.
+ * sysdeps/generic/pt-attr-setschedparam.c: New file.
+ * sysdeps/generic/pt-attr-setschedpolicy.c: New file.
+ * sysdeps/generic/pt-attr-setscope.c: New file.
+ * sysdeps/generic/pt-attr-setstack.c: New file.
+ * sysdeps/generic/pt-attr-setstackaddr.c: New file.
+ * sysdeps/generic/pt-attr-setstacksize.c: New file.
+ * sysdeps/generic/pt-attr.c: New file.
+
+ * sysdeps/generic/bits/thread-attr.h: New file.
+
+ * Makefile.am (libpthread_a_SOURCES): Add pt-attr.c,
+ pt-attr-destroy.c, pt-attr-getdetachstate.c,
+ pt-attr-getguardsize.c, pt-attr-getinheritsched.c,
+ pt-attr-getschedparam.c, pt-attr-getschedpolicy.c,
+ pt-attr-getscope.c, pt-attr-getstack.c, pt-attr-getstackaddr.c,
+ pt-attr-getstacksize.c, pt-attr-init.c, pt-attr-setdetachstate.c,
+ pt-attr-setguardsize.c, pt-attr-setinheritsched.c,
+ pt-attr-setschedparam.c, pt-attr-setschedpolicy.c,
+ pt-attr-setscope.c, pt-attr-setstack.c, pt-attr-setstackaddr.c,
+ pt-attr-setstacksize.c and pt-attr.c.
+
+ * headers.m4: Add bits/thread-attr.h.
+
+ * include/pthread/pthread.h: Inlucde <bits/thread-attr.h>.
+ (__pthread_inheritsched): New enumeration.
+ (__pthread_contentionscop): Likewise.
+ (__pthread_detachstate): Beautify.
+
+ (pthread_attr_t): Update declaration.
+
+ (pthread_attr_init): New definition.
+ (pthread_attr_destroy): Likewise.
+ (pthread_attr_getinheritsched): Likewise.
+ (pthread_attr_setinheritsched): Likewise.
+ (pthread_attr_getschedparam): Likewise.
+ (pthread_attr_setschedparam): Likewise.
+ (pthread_attr_getschedpolicy): Likewise.
+ (pthread_attr_setschedpolicy): Likewise.
+ (pthread_attr_getscope): Likewise.
+ (pthread_attr_setscope): Likewise.
+ (pthread_attr_getstackaddr): Likewise.
+ (pthread_attr_setstackaddr): Likewise.
+ (pthread_attr_getstack): Likewise.
+ (pthread_attr_setstack): Likewise.
+ (pthread_attr_getdetachstate): Likewise.
+ (pthread_attr_setdetachstate): Likewise.
+ (pthread_attr_getguardsize): Likewise.
+ (pthread_attr_setguardsize): Likewise.
+ (pthread_attr_getstacksize): Likewise.
+ (pthread_attr_setstacksize): Likewise.
+
+ * pthread/pt-internal.h (struct __pthread): New member, guardsize.
+ (__pthread_default_attr): Make constant.
+ (struct __pthread_attr): Moved definition from here ...
+ * sysdeps/generic/bits/thread-attr.h: ... to here.
+ (struct __pthread_attr): Add new members: guardsize, inheritsched,
+ contentionscope and schedpolicy.
+
+ * pthread/pt-attr.c: Moved from here ...
+ * sysdeps/generic/pt-attr.c: ... to here.
+ (__pthread_default_attr): Initialize new members guardsize,
+ inheritsched, contentionscope and schedpolicy.
+
+ * pthread/pt-create.c (pthread_create): Make SETUP constant.
+ Sync with pthread_attr_t type change.
+ Set PTHREAD->guardsize appropriately.
+
+2002-09-12 Neal H. Walfield <neal@cs.uml.edu>
+
+ * tests/Makefile.am (AM_CPPFLAGS): Learn to spel.
+
+2002-09-12 Neal H. Walfield <neal@cs.uml.edu>
+
+ * tests/test-2.c: Implement it.
+
+2002-09-11 Neal H. Walfield <neal@cs.uml.edu>
+
+ * Makefile.am (SUBDIRS): New variable.
+
+ * tests/Makefile.am: New file.
+ * tests/test-1.c: file.
+ * tests/test-2.c: file.
+
+2002-09-11 Neal H. Walfield <neal@cs.uml.edu>
+
+ * include/libc-symbols.h: Do not define SHARED.
+ * not-in-libc.h (__mach_port_allocate): New macro.
+
+ * pthread/pt-alloc.c (__pthread_alloc): Add an assert.
+
+ * sysdeps/generic/pt-mutex-unlock.c (__pthread_mutex_unlock):
+ Simplify logic: WAKEUP is known not to be NULL after it is tested.
+
+ * sysdeps/mach/pt-start.c (create_wakeupmsg): Do not allocate a
+ reply port; use a normal port.
+ If __mach_port_insert_right fails, deallocate
+ THREAD->wakeupmsg.msgh_remote_port.
+
+2002-09-11 Neal H. Walfield <neal@cs.uml.edu>
+
+ * Makefile.am (libpthread_a_SOURCES): Add cthreads-compat.c.
+
+2002-08-26 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/mach/hurd/pt-errno.c: New file.
+
+2002-08-26 Neal H. Walfield <neal@cs.uml.edu>
+
+ * include/pthread/pthread.h (pthread_mutexattr_t): Moved from here
+ ..
+ * sysdeps/generic/bits/mutex.h: ... to here.
+
+2002-08-26 Neal H. Walfield <neal@cs.uml.edu>
+
+ * Makefile.am (SYSDEPS) [MACH]: Do not built lockfile.c.
+ (include_HEADERS): List headers to be installed. Leave commented
+ until it works with VPATH.
+
+2002-08-26 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/l4/pt-stack.c (allocate_page): Fix typo.
+
+2002-08-22 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/l4/pt-stack.c (allocate_page): Request the correct
+ permissions for the request memory.
+
+2002-08-22 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/Makefile: Moved from here ...
+ * pthread/Makefile.glibc: ... to here to avoid confusing automake.
+
+2002-08-22 Neal H. Walfield <neal@cs.uml.edu>
+
+ * Makefile.am (AM_CPPFLAGS): Fix the include paths.
+ Implicitly include include/libc-symbols.h.
+ (SYSDEPS) [L4]: Add crt0.c.
+ (libpthread_a_SOURCES): Remove crt0.c.
+
+ (VPATH): New variable.
+ (libpthread_a_SOURCES): Depend on the VPATH; do not use absolute
+ paths.
+
+2002-08-22 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/pt-cond-wait.c: Doc fix thanks to Marcus
+ Brinkmann for pointing this out.
+ * sysdeps/generic/pt-mutex-lock.c: Likewise.
+
+2002-08-22 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/mach/hurd/pt-sysdep.h (__thread_set_pcsp): Prototype new
+ function.
+ * sysdeps/mach/hurd/i386/pt-machdep.c (__thread_set_pcsp):
+ Implement it.
+ * sysdeps/mach/pt-start.c (__pthread_start): Use it.
+
+2002-08-22 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/l4/pt-stack.c: Remove comment about next_stack_base.
+ This is baggage carried over from the Mach version.
+ (allocate_page): Use L4_FpageLog2 properly.
+
+2002-08-22 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-internal.h (struct __pthread_attr): Add schedparam
+ field.
+ * pthread/pt-attr.c (__pthread_default_attr): Initialize
+ schedparam field.
+
+2002-08-22 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-internal.h (__pthread_do_cancel): Add prototype.
+
+2002-08-22 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-alloc.c (alloc_init): Make static and use RUN_HOOK.
+ * pthread/pt-initialize.c (__pthread_initialize): Remove the hack
+ and use RUN_HOOK.
+
+2002-08-22 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-create.c: Include <signal.h>.
+
+2002-08-22 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/mach/hurd/pt-docancel.c: New file.
+ * sysdeps/mach/hurd/pt-save-self.c: New file.
+
+2002-08-22 Neal H. Walfield <neal@cs.uml.edu>
+
+ * include/pthread/pthread.h: Include <sched.h> and <time.h>.
+ (pthread_mutexattr_t): Add prototype.
+ (pthread_mutex_init): Likewise.
+ (pthread_mutex_destroy): Likewise.
+
+ * sysdeps/generic/bits/mutex.h (pthread_mutex_init): New function.
+ (pthread_mutex_destroy): New function.
+
+ * sysdeps/generic/bits/pthread.h (pthread_equal): New function.
+
+2002-08-22 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-setcancelstate.c (pthread_setcancelstate): Add
+ explicit break to elide gcc warning.
+ * pthread/pt-setcanceltype.c (pthread_setcanceltype): Likewise.
+
+2002-08-22 Neal H. Walfield <neal@cs.uml.edu>
+
+ * include/libc-symbols.h: Do not define _LIBC as we are not
+ actually compiling glibc.
+ (HAVE_ASM_WEAKEXT_DIRECTIVE): Do not define it.
+ (HAVE_ASM_SET_DIRECTIVE): Define it.
+ (HAVE_BUILTIN_EXPECT): Likewise.
+ (HAVE_GNU_LD): Likewise.
+ (HAVE_ELF): Likewise.
+ (HAVE_SECTION_QUOTES): Likewise.
+ (HAVE_VISIBILITY_ATTRIBUTE): Likewise.
+ (SHARED): Likewise.
+
+ * not-in-libc.h: New file.
+ * Makefile.am (AM_CPPFLAGS): Include not-in-libc.h implicitly.
+
+ * lockfile.c: New file.
+ * Makefile.am (SYSDEPS) [MACH]: Add lockfile.c.
+
+2002-08-22 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/mach/hurd/bits/pthread.h: Removed. Used the generic
+ version.
+
+2002-08-21 Neal H. Walfield <neal@cs.uml.edu>
+
+ * headers.m4: Fix typo.
+
+2002-08-21 Neal H. Walfield <neal@cs.uml.edu>
+
+ * include: Moved from libc/include except for include/sched.h and
+ include/time.h.
+ * pthread: Moved from libc/pthread.
+ * sysdeps: Moved from libc/sysdeps except for
+ sysdeps/i386/bits/atomic.h and sysdeps/hurd/hurd/threadvar.h.
+ * crt0.c: Moved from libc/crt0.c.
+
+ * sysdeps/generic/bits: Moved from include/bits except
+ include/bits/wordsize.h.
+ * include/pthread: Moved from include/pthread.
+ * include/lock-intern.h: Moved from include/lock-intern.h.
+ * include/pthread.h: Moved from include/pthread.h.
+
+ * headers.m4: New file.
+
+2002-08-19 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/l4/pt-start.c [WORKING_EXREGS]: Ideal implementation.
+
+2002-08-05 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pthread.h (PTHREAD_SPINLOCK_INITIALIZER): New
+ declaration.
+
+2002-08-03 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/l4/hurd/pt-sysdep.h (PTHREAD_SYSDEP_MEMBERS): Add
+ my_errno.
+ * sysdeps/l4/hurd/pt-errno.c: New file.
+ * Makefile.am (libc_a_SOURCES): Added sysdeps/l4/hurd/pt-errno.c.
+
+2002-07-29 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-internal.h (__pthread_save_self): New declaration.
+ Dual of _pthread_self ().
+ * sysdeps/l4/pt-save-self.c: New file.
+ * Makefile.am (libc_a_SOURCES): Added
+ sysdeps/l4/hurd/pt-save-self.c.
+
+ * pthread/pt-create.c (pthread_create): Save the new thread's
+ control block explicitly using __pthread_save_self.
+ * sysdeps/l4/hurd/pt-sysdep.c (init_routine): Replace Hurd's
+ threadvar code with __pthread_save_self.
+ * sysdeps/l4/hurd/pt-sysdep.h (_pthread_self): Likewise.
+ (_HURD_THREADVAR_THREAD): Removed macro.
+ * sysdeps/l4/hurd/i386/pt-setup.c (stack_setup): Remove Hurd's
+ threadvar code. Mechanism is now in _pthread_save_self.
+
+2002-07-29 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-internal.h (struct __pthread): Add fields
+ cancel_state, cancel_type, cancel_pending and
+ cancelation_handlers to support cancelation.
+ * pthread/pt-alloc.c (__pthread_alloc): Initialize
+ NEW->cancel_state, NEW->cancel_type, NEW->cancel_pending and
+ NEW->cancelation_handlers.
+ * pthread/pt-exit.c (pthread_exit): Run registered cleanup
+ handlers. If thread was canceled, set the status to
+ PTHREAD_CANCELED.
+ * pthread/pt-cleanup.c: New file.
+ * pthread/pt-setcancelstate.c: New file.
+ * pthread/pt-setcanceltype.c: New file.
+ * pthread/pt-testcancel.c: New file.
+ * sysdeps/l4/pt-docancel.c: New file.
+
+ * Makefile.am (libc_a_SOURCES): Add pthread/pt-cleanup.c,
+ pthread/pt-setcancelstate.c, pthread/pt-setcanceltype.c,
+ pthread/pt-testcancel.c and sysdeps/l4/pt-docancel.c.
+
+2002-07-29 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pthread.h (pthread_cleanup_push): Moved from here ...
+ * bits/cancelation.h: ... to here.
+ * pthread/pthread.h (pthread_cleanup_pop): Moved from here ...
+ * bits/cancelation.h: ... to here.
+
+ * pthread/pthread.h (pthread_cleanup_push): New definition.
+ * pthread/pthread.h (pthread_cleanup_pop): New definition.
+
+ * bits/cancelation.h: Include <assert.h>.
+ * pthread/pthread.h: Do not include <assert.h>.
+
+2002-07-29 Neal H. Walfield <neal@cs.uml.edu>
+
+ * bits/condition.h (__PTHREAD_COND_INITIALIZER): Cast result.
+ * bits/mutex.h (__PTHREAD_MUTEX_INITIALIZER): Likewise.
+ * bits/spin-lock.h (__SPIN_LOCK_INITIALIZER): Likewise.
+
+2002-07-29 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pthread.h: Include <bits/cancelation.h> and <assert.h>.
+ (PTHREAD_CANCEL_DISABLE): New macro.
+ (PTHREAD_CANCEL_ENABLE): New macro.
+ (PTHREAD_CANCEL_DEFERRED): New macro.
+ (PTHREAD_CANCEL_ASYNCHRONOUS): New macro.
+ (PTHREAD_CANCELED): New macro.
+ (pthread_setcancelstate): New definition.
+ (pthread_setcanceltype): New definition.
+ (pthread_cancel): New definition.
+ (pthread_testcancel): New definition.
+ (pthread_cleanup_push): New macro.
+ (pthread_cleanup_pop): New macro.
+ * bit/condition.h: New file.
+
+2002-07-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/l4/pt-block.c (__pthread_block): Receive from any local
+ thread, not any thread.
+
+2002-07-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * crt0.c (exit): Print the exit value for debugging purposes.
+
+2002-07-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-alloc.c (__pthread_alloc): Improve comments. When
+ allocating a new pthread, really initialize it.
+ * pthread/pt-create.c (pthread_create): Reuse the old stacks when
+ possible. If allocating the thread structure fails, do not try to
+ free anything. Clear the thread id on failure. Beautify and add
+ comments.
+
+ * pthread/pt-dealloc.c (__pthread_dealloc): Rewritten to be the
+ dual of __pthread_alloc rather than an all-in-one.
+ * pthread/pt-detach.c (pthread_detach): Factor out code that is in
+ __pthread_dealloc. Unlock PTHREAD->state_lock before calling
+ __pthread_dealloc.
+ * pthread/pt-exit.c (pthread_exit): Likewise.
+ * pthread/pt-join.c (pthread_join): Likewise.
+
+2002-07-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-internal.h: Beautify and fix comments.
+ (__pthread_setid): Get a write lock, not a read lock.
+
+2002-07-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pt-alloc.c (__pthread_alloc): (alloc_init): Make it an
+ external, not static as RUN_HOOKS does not work yet.
+ * pthread/pt-initialize.c (__pthread_initialize): Call alloc_init
+ directly as RUN_HOOK does not yet work.
+
+2002-07-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/l4/hurd/pt-sysdep.c (init_routine): Be sure that
+ __hurd_threadvar_stack_mask and __hurd_threadvar_stack_offset are
+ set before calling __pthread_setup.
+ * sysdeps/l4/hurd/i386/pt-setup.c (stack_setup): Elide hack and
+ use __hurd_threadvar_location_from-sp.
+
+2002-07-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/generic/pt-cond-wait.c (pthread_cond_wait): Add
+ comment about a race condition.
+ * sysdeps/generic/pt-mutex-lock.c (__pthread_mutex_lock):
+ Likewise.
+
+2002-07-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/l4/pt-start.c (send_startup_ipc): Use task_server (which
+ is now also the thread_server). Do smarter casting.
+ * sysdeps/l4/hurd/pt-sysdep.h (__pthread_halt): Likewise.
+
+2002-07-25 Neal H. Walfield <neal@cs.uml.edu>
+
+ * sysdeps/l4/pt-wakeup.c: Fix comment.
+
+2002-07-24 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/Makefile: New file. Imported from Mark's pthread
+ package with local modifications.
+ * pthread/Versions: Likewise.
+ * pthread/cthreads-compat.c: Likewise.
+ * pthread/pt-alloc.c: Likewise.
+ * pthread/pt-attr.c: Likewise.
+ * pthread/pt-create.c: Likewise.
+ * pthread/pt-dealloc.c: Likewise.
+ * pthread/pt-detach.c: Likewise.
+ * pthread/pt-exit.c: Likewise.
+ * pthread/pt-initialize.c: Likewise.
+ * pthread/pt-internal.h: Likewise.
+ * pthread/pt-join.c: Likewise.
+ * pthread/pt-self.c: Likewise.
+ * pthread/pt-spin-inlines.c: Likewise.
+ * pthread/pthread.patch: Likewise.
+ * sysdeps/generic/pt-cond-brdcast.c: Likewise.
+ * sysdeps/generic/pt-cond-signal.c: Likewise.
+ * sysdeps/generic/pt-cond-wait.c: Likewise.
+ * sysdeps/generic/pt-mutex-lock.c: Likewise.
+ * sysdeps/generic/pt-mutex-unlock.c: Likewise.
+ * sysdeps/hurd/hurd/threadvar.h: Likewise.
+ * sysdeps/i386/machine-sp.h: Likewise.
+ * sysdeps/i386/pt-machdep.h: Likewise.
+ * sysdeps/i386/bits/atomic.h: Likewise.
+ * sysdeps/l4/pt-block.c: Likewise.
+ * sysdeps/l4/pt-stack.c: Likewise.
+ * sysdeps/l4/pt-start.c: Likewise.
+ * sysdeps/l4/pt-wakeup.c: Likewise.
+ * sysdeps/l4/hurd/pt-sysdep.c: Likewise.
+ * sysdeps/l4/hurd/pt-sysdep.h: Likewise.
+ * sysdeps/l4/hurd/i386/pt-machdep.c: Likewise.
+ * sysdeps/l4/hurd/i386/pt-setup.c: Likewise.
+ * sysdeps/mach/pt-block.c: Likewise.
+ * sysdeps/mach/pt-stack.c: Likewise.
+ * sysdeps/mach/pt-start.c: Likewise.
+ * sysdeps/mach/pt-wakeup.c: Likewise.
+ * sysdeps/mach/hurd/pt-sysdep.c: Likewise.
+ * sysdeps/mach/hurd/pt-sysdep.h: Likewise.
+ * sysdeps/mach/hurd/bits/pthread.h: Likewise.
+ * sysdeps/mach/hurd/i386/pt-machdep.c: Likewise.
+ * sysdeps/mach/hurd/i386/pt-setup.c: Likewise.
+ * sysdeps/posix/pt-spin.c: Likewise.
+
+ * include/libc-symbols.h: Imported from glibc with local
+ modifications for pthread port.
+ * include/set-hooks.h: Likewise.
+
+ * include/sched.h: Glue code for pthread port until a real
+ implementation is available.
+ * include/time.h: Likewise.
+
+ * Makefile.am (libc_a_SOURCES): Added most of the above c files.
+ (CFLAGS): Build up the include paths the way that glibc does.
+
+ * TODO: New file.
+
+ * crt0.c: Rewritten to include support for initializing pthreads
+ and dealing with the new stack layout.
+
+2002-07-24 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pthread.h: Define pthread_spinlock_t.
+ (pthread_spin_destroy): Use it, not __pthread_spinlock_t.
+ (pthread_spin_init): Likewise.
+ (pthread_spin_lock): Likewise.
+ (pthread_spin_trylock): Likewise.
+ (pthread_spin_unlock): Likewise.
+
+ * features.h (__USE_XOPEN2K): Define it.
+
+2002-07-24 Neal H. Walfield <neal@cs.uml.edu>
+
+ * pthread/pthread.h: New file imported from Mark's pthead package.
+
+2002-07-24 Neal H. Walfield <neal@cs.uml.edu>
+
+ * bits/condition.h: New file imported from Mark's pthead package.
+ * bits/mutex.h: Likewise.
+ * bits/pthread.h: Likewise.
+ * bits/spin-lock.h: Likewise.
+
+2002-07-23 Jeff Bailey <jbailey@outpost.dnsalias.org>
+
+ * .cvsignore: New File
+
+2002-07-21 Neal H. Walfield <neal@cs.uml.edu>
+
+ * crt0.c (_start): Put in .START section, not in the text.
+
+2002-07-17 Neal H. Walfield <neal@cs.uml.edu>
+
+ * Makefile.am (AM_CFLAGS): Library is no longer called libcrt0 but
+ libc. Adjust accordingly.
diff --git a/libpthread/Makefile b/libpthread/Makefile
new file mode 100644
index 00000000..04dfb26d
--- /dev/null
+++ b/libpthread/Makefile
@@ -0,0 +1,247 @@
+#
+# Copyright (C) 1994, 1995, 1996, 1997, 2000, 2002, 2004, 2005, 2006, 2007,
+# 2008 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2, or (at
+# your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+dir := libpthread
+makemode := library
+
+MICROKERNEL := mach
+SYSDEPS := lockfile.c
+
+LCLHDRS :=
+
+SRCS := pt-attr.c pt-attr-destroy.c pt-attr-getdetachstate.c \
+ pt-attr-getguardsize.c pt-attr-getinheritsched.c \
+ pt-attr-getschedparam.c pt-attr-getschedpolicy.c pt-attr-getscope.c \
+ pt-attr-getstack.c pt-attr-getstackaddr.c pt-attr-getstacksize.c \
+ pt-attr-init.c pt-attr-setdetachstate.c pt-attr-setguardsize.c \
+ pt-attr-setinheritsched.c pt-attr-setschedparam.c \
+ pt-attr-setschedpolicy.c pt-attr-setscope.c pt-attr-setstack.c \
+ pt-attr-setstackaddr.c pt-attr-setstacksize.c \
+ \
+ pt-barrier-destroy.c pt-barrier-init.c pt-barrier-wait.c \
+ pt-barrier.c pt-barrierattr-destroy.c pt-barrierattr-init.c \
+ pt-barrierattr-getpshared.c pt-barrierattr-setpshared.c \
+ \
+ pt-destroy-specific.c pt-init-specific.c \
+ pt-key-create.c pt-key-delete.c \
+ pt-getspecific.c pt-setspecific.c \
+ \
+ pt-once.c \
+ \
+ pt-alloc.c \
+ pt-create.c \
+ pt-getattr.c \
+ pt-equal.c \
+ pt-dealloc.c \
+ pt-detach.c \
+ pt-exit.c \
+ pt-initialize.c \
+ pt-join.c \
+ pt-self.c \
+ pt-sigmask.c \
+ pt-spin-inlines.c \
+ pt-cleanup.c \
+ pt-setcancelstate.c \
+ pt-setcanceltype.c \
+ pt-testcancel.c \
+ pt-cancel.c \
+ \
+ pt-mutexattr.c \
+ pt-mutexattr-destroy.c pt-mutexattr-init.c \
+ pt-mutexattr-getprioceiling.c pt-mutexattr-getprotocol.c \
+ pt-mutexattr-getpshared.c pt-mutexattr-gettype.c \
+ pt-mutexattr-setprioceiling.c pt-mutexattr-setprotocol.c \
+ pt-mutexattr-setpshared.c pt-mutexattr-settype.c \
+ \
+ pt-mutex-init.c pt-mutex-destroy.c \
+ pt-mutex-lock.c pt-mutex-trylock.c pt-mutex-timedlock.c \
+ pt-mutex-unlock.c \
+ pt-mutex-transfer-np.c \
+ pt-mutex-getprioceiling.c pt-mutex-setprioceiling.c \
+ \
+ pt-rwlock-attr.c \
+ pt-rwlockattr-init.c pt-rwlockattr-destroy.c \
+ pt-rwlockattr-getpshared.c pt-rwlockattr-setpshared.c \
+ \
+ pt-rwlock-init.c pt-rwlock-destroy.c \
+ pt-rwlock-rdlock.c pt-rwlock-tryrdlock.c \
+ pt-rwlock-trywrlock.c pt-rwlock-wrlock.c \
+ pt-rwlock-timedrdlock.c pt-rwlock-timedwrlock.c \
+ pt-rwlock-unlock.c \
+ \
+ pt-cond.c \
+ pt-condattr-init.c pt-condattr-destroy.c \
+ pt-condattr-getclock.c pt-condattr-getpshared.c \
+ pt-condattr-setclock.c pt-condattr-setpshared.c \
+ \
+ pt-cond-destroy.c pt-cond-init.c \
+ pt-cond-brdcast.c \
+ pt-cond-signal.c \
+ pt-cond-wait.c \
+ pt-cond-timedwait.c \
+ \
+ pt-stack-alloc.c \
+ pt-thread-alloc.c \
+ pt-thread-dealloc.c \
+ pt-thread-start.c \
+ pt-thread-halt.c \
+ pt-startup.c \
+ \
+ pt-getconcurrency.c pt-setconcurrency.c \
+ \
+ pt-block.c \
+ pt-timedblock.c \
+ pt-wakeup.c \
+ pt-docancel.c \
+ pt-sysdep.c \
+ pt-setup.c \
+ pt-machdep.c \
+ pt-spin.c \
+ \
+ pt-sigstate-init.c \
+ pt-sigstate-destroy.c \
+ pt-sigstate.c \
+ \
+ pt-atfork.c \
+ pt-kill.c \
+ pt-getcpuclockid.c \
+ \
+ pt-getschedparam.c pt-setschedparam.c pt-setschedprio.c \
+ \
+ sem-close.c sem-destroy.c sem-getvalue.c sem-init.c sem-open.c \
+ sem-post.c sem-timedwait.c sem-trywait.c sem-unlink.c \
+ sem-wait.c \
+ \
+ cthreads-compat.c \
+ $(SYSDEPS)
+
+OBJS = $(addsuffix .o,$(basename $(notdir $(SRCS))))
+
+OTHERTAGS =
+
+libname = libpthread
+
+sysdeps_headers = \
+ pthread.h \
+ pthread/pthread.h \
+ pthread/pthreadtypes.h \
+ semaphore.h \
+ \
+ bits/pthread.h \
+ bits/pthread-np.h \
+ bits/mutex.h \
+ bits/condition.h \
+ bits/condition-attr.h \
+ bits/spin-lock.h \
+ bits/spin-lock-inline.h \
+ bits/cancelation.h \
+ bits/thread-attr.h \
+ bits/barrier-attr.h \
+ bits/barrier.h \
+ bits/thread-specific.h \
+ bits/once.h \
+ bits/mutex-attr.h \
+ bits/rwlock.h \
+ bits/rwlock-attr.h \
+ bits/semaphore.h
+
+SYSDEP_PATH = $(srcdir)/sysdeps/$(MICROKERNEL)/hurd/ia32 \
+ $(srcdir)/sysdeps/$(MICROKERNEL)/ia32 \
+ $(srcdir)/sysdeps/ia32 \
+ $(srcdir)/sysdeps/$(MICROKERNEL)/hurd \
+ $(srcdir)/sysdeps/$(MICROKERNEL) \
+ $(srcdir)/sysdeps/hurd \
+ $(srcdir)/sysdeps/generic \
+ $(srcdir)/sysdeps/posix \
+ $(srcdir)/pthread \
+ $(srcdir)/include
+
+VPATH += $(SYSDEP_PATH)
+
+HURDLIBS = ihash
+
+installhdrs :=
+installhdrsubdir := .
+
+include ../Makeconf
+
+CPPFLAGS += \
+ $(addprefix -I, $(SYSDEP_PATH)) \
+ -imacros $(srcdir)/include/libc-symbols.h \
+ -imacros $(srcdir)/not-in-libc.h
+
+
+install: install-headers $(libdir)/libpthread2.a $(libdir)/libpthread2_pic.a
+install-headers: $(addprefix $(includedir)/, $(sysdeps_headers))
+
+# XXX: If $(libdir)/libpthread2.a is installed and
+# $(libdir)/libpthread is not, we can have some issues.
+.PHONY: $(libdir)/libpthread.a $(libdir)/libpthread_pic.a
+
+# XXX: These rules are a hack. But it is better than messing with
+# ../Makeconf at the moment. Note that the linker scripts
+# $(srcdir)/libpthread.a and $(srcdir)/libpthread_pic.a get overwritten
+# when building in $(srcdir) and not a seperate build directory.
+$(libdir)/libpthread2.a: $(libdir)/libpthread.a
+ mv $< $@
+ $(INSTALL_DATA) $(srcdir)/libpthread.a $<
+
+$(libdir)/libpthread2_pic.a: $(libdir)/libpthread_pic.a
+ mv $< $@
+ $(INSTALL_DATA) $(srcdir)/libpthread_pic.a $<
+
+.PHONY: $(addprefix $(includedir)/, $(sysdeps_headers))
+
+$(addprefix $(includedir)/, $(sysdeps_headers)):
+ @set -e; \
+ t="$@"; \
+ t=$${t#$(includedir)/}; \
+ header_ok=0; \
+ for dir in $(SYSDEP_PATH); \
+ do \
+ if test -e "$$dir/$$t"; \
+ then \
+ tdir=`dirname "$@"`; \
+ if test ! -e $$tdir; \
+ then \
+ mkdir $$tdir; \
+ fi; \
+ echo $(INSTALL_DATA) "$$dir/$$t" "$@"; \
+ $(INSTALL_DATA) "$$dir/$$t" "$@"; \
+ header_ok=1; \
+ break; \
+ fi; \
+ done; \
+ if test "$${header_ok}" -ne 1; \
+ then \
+ echo; \
+ echo '*** 'The header file \`$@\' is required, but not \
+provided, by; \
+ echo '*** 'this configuration. Please report this to the \
+maintainer.; \
+ echo; \
+ false; \
+ fi
+
+# ifeq ($(VERSIONING),yes)
+#
+# # Adding this dependency gets it included in the command line,
+# # where ld will read it as a linker script.
+# $(libname).so.$(hurd-version): $(srcdir)/$(libname).map
+#
+# endif
diff --git a/Makefile.am b/libpthread/Makefile.am
index e59c9460..e59c9460 100644
--- a/Makefile.am
+++ b/libpthread/Makefile.am
diff --git a/libpthread/TODO b/libpthread/TODO
new file mode 100644
index 00000000..45b4cdc2
--- /dev/null
+++ b/libpthread/TODO
@@ -0,0 +1,174 @@
+-*- Mode: outline -*-
+
+* Interfaces
+** All interfaces specified by IEEE Std 1003.1-2001 are present, however,
+ pthread_kill and pthread_sigmask are defined in <pthread.h> and not
+ <signal.h> as they should be. Once we are compiled with glibc,
+ this should be eaiser.
+
+* Test cases. Can never have enough.
+
+* Ports
+ Port to other kernels (e.g. Linux and FreeBSD) and test on other
+ platforms.
+
+* Implementation details
+** pthread_atfork
+ This cannot be implemented without either changing glibc to export
+ some hooks (c.f. libc/sysdeps/mach/hurd/fork.c) or by providing a
+ custom fork implementation that wraps the origial using dlopen et
+ al.
+
+** Scheduling and priorities
+
+ We do not support scheduling right now in any way what so ever.
+
+ This affects:
+ pthread_attr_getinheritsched
+ pthread_attr_setinheritsched
+ pthread_attr_getschedparam
+ pthread_attr_setschedparam
+ pthread_attr_getschedpolicy
+ pthread_attr_setschedpolicy
+ pthread_attr_getscope
+ pthread_attr_setscope
+
+ pthread_mutexattr_getprioceiling
+ pthread_mutexattr_setprioceiling
+ pthread_mutexattr_getprotocol
+ pthread_mutexattr_setprotocol
+ pthread_mutex_getprioceiling
+ pthread_mutex_setprioceiling
+
+ pthread_setschedprio
+ pthread_getschedparam
+ pthread_setschedparam
+
+** Alternate stacks
+
+ Supporting alternate stacks (via pthread_attr_getstackaddr,
+ pthread_attr_setstackaddr, pthread_attr_getstack,
+ pthread_attr_setstack, pthread_attr_getstacksize and
+ pthread_attr_setstacksize) is no problem as long as they are of the
+ correct size and have the correct alignment. This is due to
+ limitations in the Hurd TSD implementation
+ (c.f. <hurd/threadvar.h>).
+
+** Cancelation
+*** Cancelation points
+ The only cancelation points are pthread_join, pthread_cond_wait,
+ pthead_cond_timedwait and pthread_testcancel. Need to explore if
+ the hurd_sigstate->cancel_hook (c.f. <hurd/signal.h>) provides the
+ desired semantics. If not, must either wrap the some functions
+ using dlsym or wait until integration with glibc.
+*** Async cancelation
+ We inject a new IP into the cancelled (running) thread and then
+ run the cancelation handlers
+ (c.f. sysdeps/mach/hurd/pt-docancel.c). The handlers need to have
+ access to the stack as they may use local variables. I think that
+ this method may leave the frame pointer in a corrupted state if
+ the thread was in, for instance, the middle of a function call.
+ The robustness needs to be confirmed.
+
+** Process Shared Attribute
+
+ Currently, there is no real support for the process shared
+ attribute. spinlocks work because we just use a test and set loop,
+ however, barriers, conditions mutexes and rwlocks, however, signal
+ wakeups via ports of which the names are process local.
+
+ We could have some process local data that is hashed to via the
+ address of the data structure. Then the first thread that blocks
+ per process would spin on the shared memory area and all others
+ would then block as normal. When the resource became available,
+ the first thread would signal the other local threads as necessary.
+ Alternatively, there could be some server, however, this opens a
+ new question: what can we use as an authentication agent.
+
+** Locking algorithm
+
+ When a thread blocks, it puts itself on a queue and then waits for
+ a message on a thread local port. The thread which eventually does
+ the wakeup sends a message to the waiter thereby waking it up. If
+ the wakeup is a broadcast wakeup (e.g. pthread_cond_broadcast,
+ pthread_barrier_wait and pthread_rdlock_unlock), the thread must
+ send O(N) messages where N is the number of waiting threads. If
+ all the threads instead received on a lock local (rather than
+ thread local) port then the thread which eventually does the wake
+ need just do one operation, mach_port_destroy and all of the
+ waiting threads would wakeup and get MACH_RCV_PORT_DIED back from
+ mach_msg. Note that the trade off is that the port must be
+ recreated. This needs to be benchmarked.
+
+ A possible problem with this is scheduling priorities. There may
+ be a preference for certain threads to wakeup before others
+ (especially if we are not doing a broadcast, for instance,
+ pthread_mutex_unlock and pthread_cond_signal). If we take this
+ approach, the kernel chooses which threads are awakened. If we
+ find that the kernel makes the wrong choices, we can still overcome
+ this by merging the two algorithms: have a list of ports sorted in
+ priority order and the waker does a mach_port_destroy on each as
+ appropriate.
+
+** Barriers
+
+ Barriers can be very slow and the contention can be very high. The
+ above algorithm is very appealing, however, this may be augmented
+ with an initial number of spins and yields. It is expected that
+ all of the threads reach the barrier within close succession, thus
+ queuing a message may be more expensive. This needs to be
+ benchmarked.
+
+** Clocks
+*** pthread_condattr_setclock allows a process to specify a clock for
+ use with pthread_cond_timedwaits. What is the correct default for
+ this, right now, we use CLOCK_REALTIME, however, we are really
+ using the system clock which, if I understand correctly, is
+ completely different.
+*** Could we even use other clocks? mach_msg uses a relative time against
+ the system clock.
+*** pthread_getcpuclockid just returns CLOCK_THREAD_CPUTIME_ID if defined.
+ Is this the correct behavior?
+
+** Timed Blocking
+*** pthread_cond_timedwait, pthead_mutex_timedlock, pthread_rwlock_timedrdlock
+ and pthread_rwlock_timedwrlock all take absolute times. We need
+ to convert them to relative times for mach_msg. Is there a way
+ around this? How will clock skew affect us?
+
+** weak aliases
+ Use them consistently and correctly and start by reading
+ http://sources.redhat.com/ml/libc-alpha/2002-08/msg00278.html.
+
+* L4 Specific Issues
+** Stack
+*** Size
+ The stack size is defined to be a single page in
+ sysdeps/l4/hurd/pt-sysdep.h. Once we are able to setup regions,
+ this can be expanded to two megs as suggested by the Mach version.
+ Until then, however, we need to allocate too much physical memory.
+*** Deallocation
+ __thread_stack_dealloc currently does not deallocate the stack.
+ For a proper implementation, we need a working memory manager.
+
+** Scheduling
+*** yield
+ [L4] We cannot use yield for spin locks as L4 only yields to threads of
+ priority which are greater than or equal to the yielding thread.
+ If there are threads of lower priority, they are not considered;
+ the yielding thread is just placed back on the processor. This
+ introduces priority inversion quite quickly. L4 will not add a
+ priority suppression function call. As such, we need to do
+ an ipc with a small time out and then use exponential back off to
+ do the actual waiting. This sucks.
+
+** Stub code
+ [L4] We include <task_client.h> in pt-start.c, however, we need a library
+ so we do not have to play with the corba stuff.
+
+** Root server and Task server
+*** Getting the tids.
+ pt-start.c has a wonderfully evil hack that will never work well.
+
+** Paging
+ We set the pager to the root server. Evil. Fix this in pt-start.c.
diff --git a/headers.m4 b/libpthread/headers.m4
index 5a58b9bf..5a58b9bf 100644
--- a/headers.m4
+++ b/libpthread/headers.m4
diff --git a/libpthread/include/libc-symbols.h b/libpthread/include/libc-symbols.h
new file mode 100644
index 00000000..54dd6e26
--- /dev/null
+++ b/libpthread/include/libc-symbols.h
@@ -0,0 +1,395 @@
+/* Support macros for making weak and strong aliases for symbols,
+ and for using symbol sets and linker warnings with GNU ld.
+ Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2008
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _LIBC_SYMBOLS_H
+#define _LIBC_SYMBOLS_H 1
+
+/* This file's macros are included implicitly in the compilation of every
+ file in the C library by -imacros.
+
+ We include config.h which is generated by configure.
+ It should define for us the following symbols:
+
+ * HAVE_ASM_SET_DIRECTIVE if we have `.set B, A' instead of `A = B'.
+ * ASM_GLOBAL_DIRECTIVE with `.globl' or `.global'.
+ * HAVE_GNU_LD if using GNU ld, with support for weak symbols in a.out,
+ and for symbol set and warning messages extensions in a.out and ELF.
+ * HAVE_ELF if using ELF, which supports weak symbols using `.weak'.
+ * HAVE_ASM_WEAK_DIRECTIVE if we have weak symbols using `.weak'.
+ * HAVE_ASM_WEAKEXT_DIRECTIVE if we have weak symbols using `.weakext'.
+
+ */
+
+/* This is defined for the compilation of all C library code. features.h
+ tests this to avoid inclusion of stubs.h while compiling the library,
+ before stubs.h has been generated. Some library code that is shared
+ with other packages also tests this symbol to see if it is being
+ compiled as part of the C library. We must define this before including
+ config.h, because it makes some definitions conditional on whether libc
+ itself is being compiled, or just some generator program. */
+// #define _LIBC 1
+
+/* Enable declarations of GNU extensions, since we are compiling them. */
+#define _GNU_SOURCE 1
+/* And we also need the data for the reentrant functions. */
+#define _REENTRANT 1
+
+// #include <config.h>
+#define HAVE_ASM_WEAK_DIRECTIVE
+#define HAVE_WEAK_SYMBOLS
+#define HAVE_ASM_SET_DIRECTIVE
+#define HAVE_BUILTIN_EXPECT
+#define HAVE_GNU_LD
+#define HAVE_ELF
+#define HAVE_SECTION_QUOTES
+#define HAVE_VISIBILITY_ATTRIBUTE
+#define HAVE_ASM_PREVIOUS_DIRECTIVE
+// #define SHARED
+
+/* The symbols in all the user (non-_) macros are C symbols.
+ HAVE_GNU_LD without HAVE_ELF implies a.out. */
+
+#if defined HAVE_ASM_WEAK_DIRECTIVE || defined HAVE_ASM_WEAKEXT_DIRECTIVE
+# define HAVE_WEAK_SYMBOLS
+#endif
+
+#ifndef __SYMBOL_PREFIX
+# ifdef NO_UNDERSCORES
+# define __SYMBOL_PREFIX
+# else
+# define __SYMBOL_PREFIX "_"
+# endif
+#endif
+
+#ifndef C_SYMBOL_NAME
+# ifdef NO_UNDERSCORES
+# define C_SYMBOL_NAME(name) name
+# else
+# define C_SYMBOL_NAME(name) _##name
+# endif
+#endif
+
+#ifndef ASM_LINE_SEP
+# define ASM_LINE_SEP ;
+#endif
+
+#ifndef C_SYMBOL_DOT_NAME
+# define C_SYMBOL_DOT_NAME(name) .##name
+#endif
+
+#ifndef __ASSEMBLER__
+/* GCC understands weak symbols and aliases; use its interface where
+ possible, instead of embedded assembly language. */
+
+/* Define ALIASNAME as a strong alias for NAME. */
+# define strong_alias(name, aliasname) _strong_alias(name, aliasname)
+# define _strong_alias(name, aliasname) \
+ extern __typeof (name) aliasname __attribute__ ((alias (#name)));
+
+/* This comes between the return type and function name in
+ a function definition to make that definition weak. */
+# define weak_function __attribute__ ((weak))
+# define weak_const_function __attribute__ ((weak, __const__))
+
+# ifdef HAVE_WEAK_SYMBOLS
+
+/* Define ALIASNAME as a weak alias for NAME.
+ If weak aliases are not available, this defines a strong alias. */
+# define weak_alias(name, aliasname) _weak_alias (name, aliasname)
+# define _weak_alias(name, aliasname) \
+ extern __typeof (name) aliasname __attribute__ ((weak, alias (#name)));
+
+/* Declare SYMBOL as weak undefined symbol (resolved to 0 if not defined). */
+# define weak_extern(symbol) _weak_extern (symbol)
+# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE
+# define _weak_extern(symbol) asm (".weakext " __SYMBOL_PREFIX #symbol);
+# else
+# define _weak_extern(symbol) asm (".weak " __SYMBOL_PREFIX #symbol);
+# endif
+
+# else
+
+# define weak_alias(name, aliasname) strong_alias(name, aliasname)
+# define weak_extern(symbol) /* Nothing. */
+
+# endif
+
+#else /* __ASSEMBLER__ */
+
+# ifdef HAVE_ASM_SET_DIRECTIVE
+# define strong_alias(original, alias) \
+ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \
+ .set C_SYMBOL_NAME (alias),C_SYMBOL_NAME (original)
+# else
+# ifdef HAVE_ASM_GLOBAL_DOT_NAME
+# define strong_alias(original, alias) \
+ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \
+ C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) ASM_LINE_SEP \
+ ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \
+ C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original)
+# else
+# define strong_alias(original, alias) \
+ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \
+ C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original)
+# endif
+# endif
+
+# ifdef HAVE_WEAK_SYMBOLS
+# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE
+# define weak_alias(original, alias) \
+ .weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original)
+# define weak_extern(symbol) \
+ .weakext C_SYMBOL_NAME (symbol)
+
+# else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */
+
+# ifdef HAVE_ASM_GLOBAL_DOT_NAME
+# define weak_alias(original, alias) \
+ .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \
+ C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) ASM_LINE_SEP \
+ ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \
+ C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original)
+# else
+# define weak_alias(original, alias) \
+ .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \
+ C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original)
+# endif
+
+# define weak_extern(symbol) \
+ .weak C_SYMBOL_NAME (symbol)
+
+# endif /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */
+
+# else /* ! HAVE_WEAK_SYMBOLS */
+
+# define weak_alias(original, alias) strong_alias(original, alias)
+# define weak_extern(symbol) /* Nothing */
+# endif /* ! HAVE_WEAK_SYMBOLS */
+
+#endif /* __ASSEMBLER__ */
+
+/* On some platforms we can make internal function calls (i.e., calls of
+ functions not exported) a bit faster by using a different calling
+ convention. */
+#ifndef internal_function
+# define internal_function /* empty */
+#endif
+
+/* Prepare for the case that `__builtin_expect' is not available. */
+#ifndef HAVE_BUILTIN_EXPECT
+# define __builtin_expect(expr, val) (expr)
+#endif
+
+/* Determine the return address. */
+#define RETURN_ADDRESS(nr) \
+ __builtin_extract_return_addr (__builtin_return_address (nr))
+
+/* When a reference to SYMBOL is encountered, the linker will emit a
+ warning message MSG. */
+#ifdef HAVE_GNU_LD
+# ifdef HAVE_ELF
+
+/* We want the .gnu.warning.SYMBOL section to be unallocated. */
+# ifdef HAVE_ASM_PREVIOUS_DIRECTIVE
+# define __make_section_unallocated(section_string) \
+ asm (".section " section_string "\n\t.previous");
+# elif defined HAVE_ASM_POPSECTION_DIRECTIVE
+# define __make_section_unallocated(section_string) \
+ asm (".pushsection " section_string "\n\t.popsection");
+# else
+# define __make_section_unallocated(section_string)
+# endif
+
+/* Tacking on "\n\t#" to the section name makes gcc put it's bogus
+ section attributes on what looks like a comment to the assembler. */
+# ifdef HAVE_SECTION_QUOTES
+# define link_warning(symbol, msg) \
+ __make_section_unallocated (".gnu.warning." #symbol) \
+ static const char __evoke_link_warning_##symbol[] \
+ __attribute__ ((unused, section (".gnu.warning." #symbol "\"\n\t#\""))) \
+ = msg;
+# else
+# define link_warning(symbol, msg) \
+ __make_section_unallocated (".gnu.warning." #symbol) \
+ static const char __evoke_link_warning_##symbol[] \
+ __attribute__ ((unused, section (".gnu.warning." #symbol "\n\t#"))) = msg;
+# endif
+# else /* Not ELF: a.out */
+# ifdef HAVE_XCOFF
+/* XCOFF does not support .stabs.
+ The native aix linker will remove the .stab and .stabstr sections
+ The gnu linker will have a fatal error if there is a relocation for
+ symbol in the .stab section. Silently disable this macro. */
+# define link_warning(symbol, msg)
+# else
+# define link_warning(symbol, msg) \
+ asm (".stabs \"" msg "\",30,0,0,0\n\t" \
+ ".stabs \"" __SYMBOL_PREFIX #symbol "\",1,0,0,0\n");
+# endif /* XCOFF */
+# endif
+#else
+/* We will never be heard; they will all die horribly. */
+# define link_warning(symbol, msg)
+#endif
+
+/* A canned warning for sysdeps/stub functions. */
+#define stub_warning(name) \
+ link_warning (name, \
+ "warning: " #name " is not implemented and will always fail")
+
+/*
+
+*/
+
+#ifdef HAVE_GNU_LD
+
+/* Symbol set support macros. */
+
+# ifdef HAVE_ELF
+
+/* Make SYMBOL, which is in the text segment, an element of SET. */
+# define text_set_element(set, symbol) _elf_set_element(set, symbol)
+/* Make SYMBOL, which is in the data segment, an element of SET. */
+# define data_set_element(set, symbol) _elf_set_element(set, symbol)
+/* Make SYMBOL, which is in the bss segment, an element of SET. */
+# define bss_set_element(set, symbol) _elf_set_element(set, symbol)
+
+/* These are all done the same way in ELF.
+ There is a new section created for each set. */
+# ifdef SHARED
+/* When building a shared library, make the set section writable,
+ because it will need to be relocated at run time anyway. */
+# define _elf_set_element(set, symbol) \
+ static const void *__elf_set_##set##_element_##symbol##__ \
+ __attribute__ ((unused, section (#set))) = &(symbol)
+# else
+# define _elf_set_element(set, symbol) \
+ static const void *const __elf_set_##set##_element_##symbol##__ \
+ __attribute__ ((unused, section (#set))) = &(symbol)
+# endif
+
+/* Define SET as a symbol set. This may be required (it is in a.out) to
+ be able to use the set's contents. */
+# define symbol_set_define(set) symbol_set_declare(set)
+
+/* Declare SET for use in this module, if defined in another module. */
+# define symbol_set_declare(set) \
+ extern void *const __start_##set __attribute__ ((__weak__)); \
+ extern void *const __stop_##set __attribute__ ((__weak__)); \
+ weak_extern (__start_##set) weak_extern (__stop_##set)
+
+/* Return a pointer (void *const *) to the first element of SET. */
+# define symbol_set_first_element(set) (&__start_##set)
+
+/* Return true iff PTR (a void *const *) has been incremented
+ past the last element in SET. */
+# define symbol_set_end_p(set, ptr) ((ptr) >= &__stop_##set)
+
+# else /* Not ELF: a.out. */
+
+# ifdef HAVE_XCOFF
+/* XCOFF does not support .stabs.
+ The native aix linker will remove the .stab and .stabstr sections
+ The gnu linker will have a fatal error if there is a relocation for
+ symbol in the .stab section. Silently disable these macros. */
+# define text_set_element(set, symbol)
+# define data_set_element(set, symbol)
+# define bss_set_element(set, symbol)
+# else
+# define text_set_element(set, symbol) \
+ asm (".stabs \"" __SYMBOL_PREFIX #set "\",23,0,0," __SYMBOL_PREFIX #symbol)
+# define data_set_element(set, symbol) \
+ asm (".stabs \"" __SYMBOL_PREFIX #set "\",25,0,0," __SYMBOL_PREFIX #symbol)
+# define bss_set_element(set, symbol) ?error Must use initialized data.
+# endif /* XCOFF */
+# define symbol_set_define(set) void *const (set)[1];
+# define symbol_set_declare(set) extern void *const (set)[1];
+
+# define symbol_set_first_element(set) &(set)[1]
+# define symbol_set_end_p(set, ptr) (*(ptr) == 0)
+
+# endif /* ELF. */
+#else
+/* We cannot do anything in generial. */
+# define text_set_element(set, symbol) asm ("")
+# define data_set_element(set, symbol) asm ("")
+# define bss_set_element(set, symbol) asm ("")
+# define symbol_set_define(set) void *const (set)[1];
+# define symbol_set_declare(set) extern void *const (set)[1];
+
+# define symbol_set_first_element(set) &(set)[1]
+# define symbol_set_end_p(set, ptr) (*(ptr) == 0)
+#endif /* Have GNU ld. */
+
+#if DO_VERSIONING
+# define symbol_version(real, name, version) \
+ _symbol_version(real, name, version)
+# define default_symbol_version(real, name, version) \
+ _default_symbol_version(real, name, version)
+# ifdef __ASSEMBLER__
+# define _symbol_version(real, name, version) \
+ .symver real, name##@##version
+# define _default_symbol_version(real, name, version) \
+ .symver real, name##@##@##version
+# else
+# define _symbol_version(real, name, version) \
+ __asm__ (".symver " #real "," #name "@" #version)
+# define _default_symbol_version(real, name, version) \
+ __asm__ (".symver " #real "," #name "@@" #version)
+# endif
+#else
+# define symbol_version(real, name, version)
+# define default_symbol_version(real, name, version) \
+ strong_alias(real, name)
+#endif
+
+#if defined HAVE_VISIBILITY_ATTRIBUTE && defined SHARED
+# define attribute_hidden __attribute__ ((visibility ("hidden")))
+#else
+# define attribute_hidden
+#endif
+
+/* Handling on non-exported internal names. We have to do this only
+ for shared code. */
+#ifdef SHARED
+# define INTUSE(name) name##_internal
+# define INTDEF(name) strong_alias (name, name##_internal)
+# define INTVARDEF(name) \
+ _INTVARDEF (name, name##_internal)
+# if defined HAVE_VISIBILITY_ATTRIBUTE
+# define _INTVARDEF(name, aliasname) \
+ extern __typeof (name) aliasname __attribute__ ((alias (#name), \
+ visibility ("hidden")));
+# else
+# define _INTVARDEF(name, aliasname) \
+ extern __typeof (name) aliasname __attribute__ ((alias (#name)));
+# endif
+# define INTDEF2(name, newname) strong_alias (name, newname##_internal)
+# define INTVARDEF2(name, newname) _INTVARDEF (name, newname##_internal)
+#else
+# define INTUSE(name) name
+# define INTDEF(name)
+# define INTVARDEF(name)
+# define INTDEF2(name, newname)
+# define INTVARDEF2(name, newname)
+#endif
+
+#endif /* libc-symbols.h */
diff --git a/libpthread/include/pthread.h b/libpthread/include/pthread.h
new file mode 100644
index 00000000..1d4d3c7b
--- /dev/null
+++ b/libpthread/include/pthread.h
@@ -0,0 +1,7 @@
+#ifndef _PTHREAD_H
+#include <pthread/pthread.h>
+
+extern int __pthread_mutex_lock (pthread_mutex_t *__mutex);
+extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex);
+
+#endif
diff --git a/libpthread/include/pthread/pthread.h b/libpthread/include/pthread/pthread.h
new file mode 100644
index 00000000..dedb09d4
--- /dev/null
+++ b/libpthread/include/pthread/pthread.h
@@ -0,0 +1,744 @@
+/* Copyright (C) 2000, 2002, 2005, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/*
+ * POSIX Threads Extension: ??? <pthread.h>
+ */
+
+#ifndef _PTHREAD_H
+#define _PTHREAD_H 1
+
+#include <features.h>
+
+#include <sys/cdefs.h>
+#ifndef __extern_inline
+/* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+ inline semantics, unless -fgnu89-inline is used. */
+# if !defined __cplusplus || __GNUC_PREREQ (4,3)
+# if defined __GNUC_STDC_INLINE__ || defined __cplusplus
+# define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
+# if __GNUC_PREREQ (4,3)
+# define __extern_always_inline \
+ extern __always_inline __attribute__ ((__gnu_inline__, __artificial__))
+# else
+# define __extern_always_inline \
+ extern __always_inline __attribute__ ((__gnu_inline__))
+# endif
+# else
+# define __extern_inline extern __inline
+# define __extern_always_inline extern __always_inline
+# endif
+# endif
+#endif
+
+#include <sched.h>
+
+__BEGIN_DECLS
+
+#include <pthread/pthreadtypes.h>
+
+#include <bits/pthread.h>
+
+/* Possible values for the process shared attribute. */
+#define PTHREAD_PROCESS_PRIVATE __PTHREAD_PROCESS_PRIVATE
+#define PTHREAD_PROCESS_SHARED __PTHREAD_PROCESS_SHARED
+
+
+/* Thread attributes. */
+
+/* Possible values for the inheritsched attribute. */
+#define PTHREAD_EXPLICIT_SCHED __PTHREAD_EXPLICIT_SCHED
+#define PTHREAD_INHERIT_SCHED __PTHREAD_INHERIT_SCHED
+
+/* Possible values for the `contentionscope' attribute. */
+#define PTHREAD_SCOPE_SYSTEM __PTHREAD_SCOPE_SYSTEM
+#define PTHREAD_SCOPE_PROCESS __PTHREAD_SCOPE_PROCESS
+
+/* Possible values for the `detachstate' attribute. */
+#define PTHREAD_CREATE_JOINABLE __PTHREAD_CREATE_JOINABLE
+#define PTHREAD_CREATE_DETACHED __PTHREAD_CREATE_DETACHED
+
+#include <bits/thread-attr.h>
+
+/* Initialize the thread attribute object in *ATTR to the default
+ values. */
+extern int pthread_attr_init (pthread_attr_t *attr);
+
+/* Destroy the thread attribute object in *ATTR. */
+extern int pthread_attr_destroy (pthread_attr_t *attr);
+
+
+/* Return the value of the inheritsched attribute in *ATTR in
+ *INHERITSCHED. */
+extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict attr,
+ int *__restrict inheritsched);
+
+/* Set the value of the inheritsched attribute in *ATTR to
+ INHERITSCHED. */
+extern int pthread_attr_setinheritsched (pthread_attr_t *attr,
+ int inheritsched);
+
+
+/* Return the value of the schedparam attribute in *ATTR in *PARAM. */
+extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict attr,
+ struct sched_param *__restrict param);
+
+/* Set the value of the schedparam attribute in *ATTR to PARAM. */
+extern int pthread_attr_setschedparam (pthread_attr_t *__restrict attr,
+ const struct sched_param *__restrict param);
+
+
+/* Return the value of the schedpolicy attribute in *ATTR to *POLICY. */
+extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict attr,
+ int *__restrict policy);
+
+/* Set the value of the schedpolicy attribute in *ATTR to POLICY. */
+extern int pthread_attr_setschedpolicy (pthread_attr_t *attr,
+ int policy);
+
+
+/* Return the value of the contentionscope attribute in *ATTR in
+ *CONTENTIONSCOPE. */
+extern int pthread_attr_getscope (const pthread_attr_t *__restrict attr,
+ int *__restrict contentionscope);
+
+/* Set the value of the contentionscope attribute in *ATTR to
+ CONTENTIONSCOPE. */
+extern int pthread_attr_setscope (pthread_attr_t *attr,
+ int contentionscope);
+
+
+/* Return the value of the stackaddr attribute in *ATTR in
+ *STACKADDR. */
+extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict attr,
+ void **__restrict stackaddr);
+
+/* Set the value of the stackaddr attribute in *ATTR to STACKADDR. */
+extern int pthread_attr_setstackaddr (pthread_attr_t *attr,
+ void *stackaddr);
+
+
+#ifdef __USE_XOPEN2K
+/* Return the value of the stackaddr and stacksize attributes in *ATTR
+ in *STACKADDR and *STACKSIZE respectively. */
+extern int pthread_attr_getstack (const pthread_attr_t *__restrict attr,
+ void **__restrict stackaddr,
+ size_t *__restrict stacksize);
+
+/* Set the value of the stackaddr and stacksize attributes in *ATTR to
+ STACKADDR and STACKSIZE respectively. */
+extern int pthread_attr_setstack (pthread_attr_t *attr,
+ void *stackaddr,
+ size_t stacksize);
+#endif
+
+
+/* Return the value of the detachstate attribute in *ATTR in
+ *DETACHSTATE. */
+extern int pthread_attr_getdetachstate (const pthread_attr_t *attr,
+ int *detachstate);
+
+/* Set the value of the detachstate attribute in *ATTR to
+ DETACHSTATE. */
+extern int pthread_attr_setdetachstate (pthread_attr_t *attr,
+ int detachstate);
+
+
+/* Return the value of the guardsize attribute in *ATTR in
+ *GUARDSIZE. */
+extern int pthread_attr_getguardsize (const pthread_attr_t *__restrict attr,
+ size_t *__restrict guardsize);
+
+/* Set the value of the guardsize attribute in *ATTR to GUARDSIZE. */
+extern int pthread_attr_setguardsize (pthread_attr_t *attr,
+ size_t guardsize);
+
+
+/* Return the value of the stacksize attribute in *ATTR in
+ *STACKSIZE. */
+extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict attr,
+ size_t *__restrict stacksize);
+
+/* Set the value of the stacksize attribute in *ATTR to STACKSIZE. */
+extern int pthread_attr_setstacksize (pthread_attr_t *attr,
+ size_t stacksize);
+
+#ifdef __USE_GNU
+/* Initialize thread attribute *ATTR with attributes corresponding to the
+ already running thread THREAD. It shall be called on an uninitialized ATTR
+ and destroyed with pthread_attr_destroy when no longer needed. */
+extern int pthread_getattr_np (pthread_t thread, pthread_attr_t *attr);
+#endif
+
+
+/* Create a thread with attributes given by ATTR, executing
+ START_ROUTINE with argument ARG. */
+extern int pthread_create (pthread_t *__restrict __threadp,
+ __const pthread_attr_t *__restrict __attr,
+ void *(*__start_routine)(void *),
+ void *__restrict __arg);
+
+/* Terminate the current thread and make STATUS available to any
+ thread that might join us. */
+extern void pthread_exit (void *__status) __attribute__ ((noreturn));
+
+/* Make calling thread wait for termination of thread THREAD. Return
+ the exit status of the thread in *STATUS. */
+extern int pthread_join (pthread_t __threadp, void **__status);
+
+/* Indicate that the storage for THREAD can be reclaimed when it
+ terminates. */
+extern int pthread_detach (pthread_t __threadp);
+
+/* Compare thread IDs T1 and T2. Return nonzero if they are equal, 0
+ if they are not. */
+extern int pthread_equal (pthread_t __t1, pthread_t __t2);
+
+# ifdef __USE_EXTERN_INLINES
+
+__extern_inline int
+pthread_equal (pthread_t __t1, pthread_t __t2)
+{
+ return __pthread_equal (__t1, __t2);
+}
+
+# endif /* Use extern inlines. */
+
+
+/* Return the thread ID of the calling thread. */
+extern pthread_t pthread_self (void);
+
+
+/* Mutex attributes. */
+
+#define PTHREAD_PRIO_NONE_NP __PTHREAD_PRIO_NONE
+#define PTHREAD_PRIO_INHERIT_NP __PTHREAD_PRIO_INHERIT
+#define PTHREAD_PRIO_PROTECT_NP __PTHREAD_PRIO_PROTECT
+#ifdef __USE_UNIX98
+#define PTHREAD_PRIO_NONE PTHREAD_PRIO_NONE_NP
+#define PTHREAD_PRIO_INHERIT PTHREAD_PRIO_INHERIT_NP
+#define PTHREAD_PRIO_PROTECT PTHREAD_PRIO_PROTECT_NP
+#endif
+
+#define PTHREAD_MUTEX_TIMED_NP __PTHREAD_MUTEX_TIMED
+#define PTHREAD_MUTEX_ERRORCHECK_NP __PTHREAD_MUTEX_ERRORCHECK
+#define PTHREAD_MUTEX_RECURSIVE_NP __PTHREAD_MUTEX_RECURSIVE
+#ifdef __USE_UNIX98
+#define PTHREAD_MUTEX_NORMAL PTHREAD_MUTEX_TIMED_NP
+#define PTHREAD_MUTEX_ERRORCHECK PTHREAD_MUTEX_ERRORCHECK_NP
+#define PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
+#define PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_NORMAL
+#endif
+#ifdef __USE_GNU
+/* For compatibility. */
+#define PTHREAD_MUTEX_FAST_NP PTHREAD_MUTEX_TIMED_NP
+#endif
+
+#include <bits/mutex-attr.h>
+
+/* Initialize the mutex attribute object in *ATTR to the default
+ values. */
+extern int pthread_mutexattr_init(pthread_mutexattr_t *attr);
+
+/* Destroy the mutex attribute structure in *ATTR. */
+extern int pthread_mutexattr_destroy(pthread_mutexattr_t *attr);
+
+
+#ifdef __USE_UNIX98
+/* Return the value of the prioceiling attribute in *ATTR in
+ *PRIOCEILING. */
+extern int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *__restrict attr,
+ int *__restrict prioceiling);
+
+/* Set the value of the prioceiling attribute in *ATTR to
+ PRIOCEILING. */
+extern int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *attr,
+ int prioceiling);
+
+
+/* Return the value of the protocol attribute in *ATTR in
+ *PROTOCOL. */
+extern int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *__restrict attr,
+ int *__restrict protocol);
+
+/* Set the value of the protocol attribute in *ATTR to PROTOCOL. */
+extern int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr,
+ int protocol);
+#endif
+
+
+/* Return the value of the process shared attribute in *ATTR in
+ *PSHARED. */
+extern int pthread_mutexattr_getpshared(const pthread_mutexattr_t *__restrict attr,
+ int *__restrict pshared);
+
+/* Set the value of the process shared attribute in *ATTR to
+ PSHARED. */
+extern int pthread_mutexattr_setpshared(pthread_mutexattr_t *attr,
+ int pshared);
+
+
+#ifdef __USE_UNIX98
+/* Return the value of the type attribute in *ATTR in *TYPE. */
+extern int pthread_mutexattr_gettype(const pthread_mutexattr_t *__restrict attr,
+ int *__restrict type);
+
+/* Set the value of the type attribute in *ATTR to TYPE. */
+extern int pthread_mutexattr_settype(pthread_mutexattr_t *attr,
+ int type);
+#endif
+
+
+/* Mutexes. */
+
+#include <bits/mutex.h>
+
+#define PTHREAD_MUTEX_INITIALIZER __PTHREAD_MUTEX_INITIALIZER
+/* Static initializer for recursive mutexes. */
+
+#ifdef __USE_GNU
+# define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \
+ __PTHREAD_RECURSIVE_MUTEX_INITIALIZER
+#endif
+
+/* Create a mutex with attributes given by ATTR and store it in
+ *__MUTEX. */
+extern int pthread_mutex_init (struct __pthread_mutex *__restrict __mutex,
+ const pthread_mutexattr_t *__restrict attr);
+
+/* Destroy the mutex __MUTEX. */
+extern int pthread_mutex_destroy (struct __pthread_mutex *__mutex);
+
+/* Wait until lock for MUTEX becomes available and lock it. */
+extern int pthread_mutex_lock (pthread_mutex_t *__mutex);
+
+/* Try to lock MUTEX. */
+extern int pthread_mutex_trylock (pthread_mutex_t *__mutex);
+
+#ifdef __USE_XOPEN2K
+/* Try to lock MUTEX, block until *ABSTIME if it is already held. */
+extern int pthread_mutex_timedlock (struct __pthread_mutex *__restrict mutex,
+ const struct timespec *__restrict abstime);
+#endif
+
+/* Unlock MUTEX. */
+extern int pthread_mutex_unlock (pthread_mutex_t *__mutex);
+
+/* Transfer ownership of the mutex MUTEX to the thread TID. The
+ caller must own the lock. */
+extern int __pthread_mutex_transfer_np (struct __pthread_mutex *mutex,
+ pthread_t tid);
+
+
+#ifdef __USE_UNIX98
+/* Return the priority ceiling of mutex *MUTEX in *PRIOCEILING. */
+extern int pthread_mutex_getprioceiling (const pthread_mutex_t *__restrict mutex,
+ int *__restrict prioceiling);
+
+/* After acquiring the mutex *MUTEX, set its priority ceiling to PRIO
+ and return the old priority ceiling in *OLDPRIO. Before returning,
+ release the mutex. */
+extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict mutex,
+ int prio, int *__restrict oldprio);
+#endif
+
+
+
+/* Condition attributes. */
+
+#include <bits/condition-attr.h>
+
+/* Initialize the condition attribute in *ATTR to the default
+ values. */
+extern int pthread_condattr_init (pthread_condattr_t *attr);
+
+/* Destroy the condition attribute structure in *ATTR. */
+extern int pthread_condattr_destroy (pthread_condattr_t *attr);
+
+
+#ifdef __USE_XOPEN2K
+/* Return the value of the clock attribute in *ATTR in *CLOCK_ID. */
+extern int pthread_condattr_getclock (const pthread_condattr_t *__restrict attr,
+ clockid_t *__restrict clock_id);
+
+/* Set the value of the clock attribute in *ATTR to CLOCK_ID. */
+extern int pthread_condattr_setclock (pthread_condattr_t *attr,
+ clockid_t clock_id);
+#endif
+
+
+/* Return the value of the process shared attribute in *ATTR in
+ *PSHARED. */
+extern int pthread_condattr_getpshared (const pthread_condattr_t *__restrict attr,
+ int *__restrict pshared);
+
+/* Set the value of the process shared attribute in *ATTR to
+ PSHARED. */
+extern int pthread_condattr_setpshared (pthread_condattr_t *attr,
+ int pshared);
+
+
+/* Condition variables. */
+
+#include <bits/condition.h>
+
+#define PTHREAD_COND_INITIALIZER __PTHREAD_COND_INITIALIZER
+
+extern int pthread_cond_init (pthread_cond_t *__restrict cond,
+ const pthread_condattr_t *__restrict attr);
+
+extern int pthread_cond_destroy (pthread_cond_t *cond);
+
+/* Unblock at least one of the threads that are blocked on condition
+ variable COND. */
+extern int pthread_cond_signal (pthread_cond_t *__cond);
+
+/* Unblock all threads that are blocked on condition variable COND. */
+extern int pthread_cond_broadcast (pthread_cond_t *__cond);
+
+/* Block on condition variable COND. MUTEX should be held by the
+ calling thread. On success, MUTEX will be held by the calling
+ thread. */
+extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
+ pthread_mutex_t *__restrict __mutex);
+
+/* Block on condition variable COND. MUTEX should be held by the
+ calling thread. On success, MUTEX will be held by the calling
+ thread. If the time specified by ABSTIME passes, ETIMEDOUT is
+ returned, and MUTEX will nevertheless be held. */
+extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
+ pthread_mutex_t *__restrict __mutex,
+ __const struct timespec *__restrict __abstime);
+
+
+/* Spin locks. */
+
+#ifdef __USE_XOPEN2K
+
+# include <bits/spin-lock.h>
+
+#define PTHREAD_SPINLOCK_INITIALIZER __PTHREAD_SPIN_LOCK_INITIALIZER
+
+/* Destroy the spin lock object LOCK. */
+extern int pthread_spin_destroy (pthread_spinlock_t *__lock);
+
+/* Initialize the spin lock object LOCK. PSHARED determines whether
+ the spin lock can be operated upon by multiple processes. */
+extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared);
+
+/* Lock the spin lock object LOCK. If the lock is held by another
+ thread spin until it becomes available. */
+extern int pthread_spin_lock (pthread_spinlock_t *__lock);
+
+/* Lock the spin lock object LOCK. Fail if the lock is held by
+ another thread. */
+extern int pthread_spin_trylock (pthread_spinlock_t *__lock);
+
+/* Unlock the spin lock object LOCK. */
+extern int pthread_spin_unlock (pthread_spinlock_t *__lock);
+
+# ifdef __USE_EXTERN_INLINES
+
+# include <bits/spin-lock-inline.h>
+
+__extern_inline int
+pthread_spin_destroy (pthread_spinlock_t *__lock)
+{
+ return __pthread_spin_destroy (__lock);
+}
+
+__extern_inline int
+pthread_spin_init (pthread_spinlock_t *__lock, int __pshared)
+{
+ return __pthread_spin_init (__lock, __pshared);
+}
+
+__extern_inline int
+pthread_spin_lock (pthread_spinlock_t *__lock)
+{
+ return __pthread_spin_lock (__lock);
+}
+
+__extern_inline int
+pthread_spin_trylock (pthread_spinlock_t *__lock)
+{
+ return __pthread_spin_trylock (__lock);
+}
+
+__extern_inline int
+pthread_spin_unlock (pthread_spinlock_t *__lock)
+{
+ return __pthread_spin_unlock (__lock);
+}
+
+# endif /* Use extern inlines. */
+
+#endif /* XPG6. */
+
+
+/* rwlock attributes. */
+
+#if defined __USE_UNIX98 || defined __USE_XOPEN2K
+
+#include <bits/rwlock-attr.h>
+
+/* Initialize rwlock attribute object in *ATTR to the default
+ values. */
+extern int pthread_rwlockattr_init (pthread_rwlockattr_t *attr);
+
+/* Destroy the rwlock attribute object in *ATTR. */
+extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *attr);
+
+
+/* Return the value of the process shared attribute in *ATTR in
+ *PSHARED. */
+extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t *__restrict attr,
+ int *__restrict pshared);
+
+/* Set the value of the process shared atrribute in *ATTR to
+ PSHARED. */
+extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *attr,
+ int pshared);
+
+
+/* rwlocks. */
+
+#include <bits/rwlock.h>
+
+#define PTHREAD_RWLOCK_INITIALIZER __PTHREAD_RWLOCK_INITIALIZER
+/* Create a rwlock object with attributes given by ATTR and strore the
+ result in *RWLOCK. */
+extern int pthread_rwlock_init (pthread_rwlock_t *__restrict rwlock,
+ const pthread_rwlockattr_t *__restrict attr);
+
+/* Destroy the rwlock *RWLOCK. */
+extern int pthread_rwlock_destroy (pthread_rwlock_t *rwlock);
+
+/* Acquire the rwlock *RWLOCK for reading. */
+extern int pthread_rwlock_rdlock (pthread_rwlock_t *rwlock);
+
+/* Acquire the rwlock *RWLOCK for reading. */
+extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *rwlock);
+
+# ifdef __USE_XOPEN2K
+/* Acquire the rwlock *RWLOCK for reading blocking until *ABSTIME if
+ it is already held. */
+extern int pthread_rwlock_timedrdlock (struct __pthread_rwlock *__restrict rwlock,
+ const struct timespec *__restrict abstime);
+# endif
+
+/* Acquire the rwlock *RWLOCK for writing. */
+extern int pthread_rwlock_wrlock (pthread_rwlock_t *rwlock);
+
+/* Try to acquire the rwlock *RWLOCK for writing. */
+extern int pthread_rwlock_trywrlock (pthread_rwlock_t *rwlock);
+
+# ifdef __USE_XOPEN2K
+/* Acquire the rwlock *RWLOCK for writing blocking until *ABSTIME if
+ it is already held. */
+extern int pthread_rwlock_timedwrlock (struct __pthread_rwlock *__restrict rwlock,
+ const struct timespec *__restrict abstime);
+# endif
+
+/* Release the lock held by the current thread on *RWLOCK. */
+extern int pthread_rwlock_unlock (pthread_rwlock_t *rwlock);
+
+#endif /* __USE_UNIX98 || __USE_XOPEN2K */
+
+
+
+/* Cancelation. */
+
+/* Register a cleanup handler. */
+extern void pthread_cleanup_push (void (*routine) (void *), void *arg);
+
+/* Unregister a cleanup handler. */
+extern void pthread_cleanup_pop (int execute);
+
+#include <bits/cancelation.h>
+
+#define pthread_cleanup_push(rt, rtarg) __pthread_cleanup_push(rt, rtarg)
+#define pthread_cleanup_pop(execute) __pthread_cleanup_pop(execute)
+
+#define PTHREAD_CANCEL_DISABLE 0
+#define PTHREAD_CANCEL_ENABLE 1
+
+/* Return the calling thread's cancelation state in *OLDSTATE and set
+ its state to STATE. */
+extern int pthread_setcancelstate (int state, int *oldstate);
+
+#define PTHREAD_CANCEL_DEFERRED 0
+#define PTHREAD_CANCEL_ASYNCHRONOUS 1
+
+/* Return the calling thread's cancelation type in *OLDTYPE and set
+ its type to TYPE. */
+extern int pthread_setcanceltype (int type, int *oldtype);
+
+/* Value returned by pthread_join if the target thread was
+ canceled. */
+#define PTHREAD_CANCELED ((void *) -1)
+
+/* Cancel THEAD. */
+extern int pthread_cancel (pthread_t thread);
+
+/* Add an explicit cancelation point. */
+extern void pthread_testcancel (void);
+
+
+/* Barriers attributes. */
+
+#ifdef __USE_XOPEN2K
+
+#include <bits/barrier-attr.h>
+
+/* Initialize barrier attribute object in *ATTR to the default
+ values. */
+extern int pthread_barrierattr_init (pthread_barrierattr_t *attr);
+
+/* Destroy the barrier attribute object in *ATTR. */
+extern int pthread_barrierattr_destroy (pthread_barrierattr_t *attr);
+
+
+/* Return the value of the process shared attribute in *ATTR in
+ *PSHARED. */
+extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t *__restrict attr,
+ int *__restrict pshared);
+
+/* Set the value of the process shared atrribute in *ATTR to
+ PSHARED. */
+extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *attr,
+ int pshared);
+
+
+/* Barriers. */
+
+#include <bits/barrier.h>
+
+/* Returned by pthread_barrier_wait to exactly one thread each time a
+ barrier is passed. */
+#define PTHREAD_BARRIER_SERIAL_THREAD -1
+
+/* Initialize barrier BARRIER. */
+extern int pthread_barrier_init (pthread_barrier_t *__restrict barrier,
+ const pthread_barrierattr_t *__restrict attr,
+ unsigned count);
+
+/* Destroy barrier BARRIER. */
+extern int pthread_barrier_destroy (pthread_barrier_t *barrier);
+
+/* Wait on barrier BARRIER. */
+extern int pthread_barrier_wait (pthread_barrier_t *barrier);
+
+#endif /* __USE_XOPEN2K */
+
+
+
+/* Thread specific data. */
+
+#include <bits/thread-specific.h>
+
+/* Create a thread specific data key in KEY visible to all threads.
+ On thread destruction, DESTRUCTOR shall be called with the thread
+ specific data associate with KEY if it is not NULL. */
+extern int pthread_key_create (pthread_key_t *key,
+ void (*destructor) (void *));
+
+/* Delete the thread specific data key KEY. The associated destructor
+ function is not called. */
+extern int pthread_key_delete (pthread_key_t key);
+
+/* Return the caller thread's thread specific value of KEY. */
+extern void *pthread_getspecific (pthread_key_t key);
+
+/* Set the caller thread's thread specific value of KEY to VALUE. */
+extern int pthread_setspecific (pthread_key_t key, const void *value);
+
+
+/* Dynamic package initialization. */
+
+#include <bits/once.h>
+
+#define PTHREAD_ONCE_INIT __PTHREAD_ONCE_INIT
+
+/* Call INIT_ROUTINE if this function has never been called with
+ *ONCE_CONTROL, otherwise do nothing. */
+extern int pthread_once (pthread_once_t *once_control,
+ void (*init_routine) (void));
+
+
+/* Concurrency. */
+
+#ifdef __USE_UNIX98
+/* Set the desired concurrency level to NEW_LEVEL. */
+extern int pthread_setconcurrency (int new_level);
+
+/* Get the current concurrency level. */
+extern int pthread_getconcurrency (void);
+#endif
+
+
+/* Forking. */
+
+/* Register the function PREPARE to be run before the process forks,
+ the function PARENT to be run after a fork in the parent and the
+ function CHILD to be run in the child after the fork. If no
+ handling is desired then any of PREPARE, PARENT and CHILD may be
+ NULL. The prepare handles will be called in the reverse order
+ which they were registered and the parent and child handlers in the
+ order in which they were registered. */
+extern int pthread_atfork (void (*prepare) (void), void (*parent) (void),
+ void (*child) (void));
+
+
+/* Signals (should be in <signal.h>). */
+
+/* Send signal SIGNO to thread THREAD. */
+extern int pthread_kill (pthread_t thread, int signo);
+
+
+/* Time. */
+
+#ifdef __USE_XOPEN2K
+/* Return the thread cpu clock. */
+extern int pthread_getcpuclockid (pthread_t thread, clockid_t *clock);
+#endif
+
+
+/* Scheduling. */
+
+/* Return thread THREAD's scheduling paramters. */
+extern int pthread_getschedparam (pthread_t thread, int *__restrict policy,
+ struct sched_param *__restrict param);
+
+/* Set thread THREAD's scheduling paramters. */
+extern int pthread_setschedparam (pthread_t thread, int policy,
+ const struct sched_param *param);
+
+/* Set thread THREAD's scheduling priority. */
+extern int pthread_setschedprio (pthread_t thread, int prio);
+
+
+/* Kernel-specific interfaces. */
+
+#include <bits/pthread-np.h>
+
+
+__END_DECLS
+
+#endif /* pthread.h */
diff --git a/libpthread/include/pthread/pthreadtypes.h b/libpthread/include/pthread/pthreadtypes.h
new file mode 100644
index 00000000..471e08ed
--- /dev/null
+++ b/libpthread/include/pthread/pthreadtypes.h
@@ -0,0 +1,136 @@
+/* Copyright (C) 2000, 2002, 2005, 2008 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/*
+ * POSIX Threads Extension: ??? <pthreadtypes.h>
+ */
+
+#ifndef _PTHREADTYPES_H
+#define _PTHREADTYPES_H 1
+
+#include <features.h>
+
+#define __need_clockid_t
+#include <time.h>
+
+/* If we are in a mode where clockid_t is not automatically defined
+ and another header has already included <time.h> then defining
+ __need_clockid_t was not enough. */
+#ifndef __clockid_t_defined
+# define __clockid_t_defined 1
+# include <bits/types.h>
+/* Clock ID used in clock and timer functions. */
+typedef __clockid_t clockid_t;
+#endif
+
+__BEGIN_DECLS
+
+#include <bits/pthread.h>
+typedef __pthread_t pthread_t;
+
+/* Possible values for the process shared attribute. */
+enum __pthread_process_shared
+ {
+ __PTHREAD_PROCESS_PRIVATE = 0,
+ __PTHREAD_PROCESS_SHARED
+ };
+
+/* Possible values for the inheritsched attribute. */
+enum __pthread_inheritsched
+ {
+ __PTHREAD_EXPLICIT_SCHED = 0,
+ __PTHREAD_INHERIT_SCHED
+ };
+
+/* Possible values for the `contentionscope' attribute. */
+enum __pthread_contentionscope
+ {
+ __PTHREAD_SCOPE_SYSTEM = 0,
+ __PTHREAD_SCOPE_PROCESS
+ };
+
+/* Possible values for the `detachstate' attribute. */
+enum __pthread_detachstate
+ {
+ __PTHREAD_CREATE_JOINABLE = 0,
+ __PTHREAD_CREATE_DETACHED
+ };
+
+#include <bits/thread-attr.h>
+typedef struct __pthread_attr pthread_attr_t;
+
+enum __pthread_mutex_protocol
+ {
+ __PTHREAD_PRIO_NONE= 0,
+ __PTHREAD_PRIO_INHERIT,
+ __PTHREAD_PRIO_PROTECT
+ };
+
+enum __pthread_mutex_type
+ {
+ __PTHREAD_MUTEX_TIMED,
+ __PTHREAD_MUTEX_ERRORCHECK,
+ __PTHREAD_MUTEX_RECURSIVE
+ };
+
+#include <bits/mutex-attr.h>
+typedef struct __pthread_mutexattr pthread_mutexattr_t;
+
+#include <bits/mutex.h>
+typedef struct __pthread_mutex pthread_mutex_t;
+
+#include <bits/condition-attr.h>
+typedef struct __pthread_condattr pthread_condattr_t;
+
+#include <bits/condition.h>
+typedef struct __pthread_cond pthread_cond_t;
+
+#ifdef __USE_XOPEN2K
+# include <bits/spin-lock.h>
+typedef __pthread_spinlock_t pthread_spinlock_t;
+#endif /* XPG6. */
+
+#if defined __USE_UNIX98 || defined __USE_XOPEN2K
+
+#include <bits/rwlock-attr.h>
+typedef struct __pthread_rwlockattr pthread_rwlockattr_t;
+
+#include <bits/rwlock.h>
+typedef struct __pthread_rwlock pthread_rwlock_t;
+
+#endif /* __USE_UNIX98 || __USE_XOPEN2K */
+
+#ifdef __USE_XOPEN2K
+
+#include <bits/barrier-attr.h>
+typedef struct __pthread_barrierattr pthread_barrierattr_t;
+
+#include <bits/barrier.h>
+typedef struct __pthread_barrier pthread_barrier_t;
+
+#endif /* __USE_XOPEN2K */
+
+#include <bits/thread-specific.h>
+typedef __pthread_key pthread_key_t;
+
+#include <bits/once.h>
+typedef struct __pthread_once pthread_once_t;
+
+__END_DECLS
+
+#endif /* pthreadtypes.h */
diff --git a/libpthread/include/semaphore.h b/libpthread/include/semaphore.h
new file mode 100644
index 00000000..657e796e
--- /dev/null
+++ b/libpthread/include/semaphore.h
@@ -0,0 +1,69 @@
+/* Copyright (C) 2005, 2007 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SEMAPHORE_H
+#define _SEMAPHORE_H 1
+
+#include <features.h>
+
+__BEGIN_DECLS
+
+#include <bits/semaphore.h>
+
+#define SEM_FAILED ((void *) 0)
+
+typedef struct __semaphore sem_t;
+
+/* Initialize semaphore *SEM with value VALUE. */
+extern int sem_init (sem_t *sem, int pshared, unsigned value);
+
+/* Destroy semaphore *SEM created with sem_init. */
+extern int sem_destroy (sem_t *sem);
+
+/* Store the value of semaphore *SEM in *VALUE. */
+extern int sem_getvalue (sem_t *__restrict sem, int *__restrict value);
+
+/* Perform a down operation on semaphore *SEM. */
+extern int sem_wait (sem_t *sem);
+
+/* Perform a down operation on semaphore *SEM if it can be done so
+ without blocking. */
+extern int sem_trywait (sem_t *sem);
+
+#ifdef __USE_XOPEN2K
+/* Perform a down operation on semaphore *SEM but don't wait longer
+ than TIMEOUT. */
+extern int sem_timedwait (sem_t *__restrict sem,
+ const struct timespec *__restrict timeout);
+#endif
+
+/* Perform an up operation on semaphore *SEM. */
+extern int sem_post (sem_t *sem);
+
+/* Open a named semaphore. */
+extern sem_t *sem_open (const char *name, int open_flags, ...);
+
+/* Close a semaphore returned by sem_open. */
+extern int sem_close (sem_t *sem);
+
+/* Unlink a named semaphore. */
+extern int sem_unlink (const char *name);
+
+__END_DECLS
+
+#endif /* semaphore.h */
diff --git a/libpthread/include/set-hooks.h b/libpthread/include/set-hooks.h
new file mode 100644
index 00000000..9ed71b32
--- /dev/null
+++ b/libpthread/include/set-hooks.h
@@ -0,0 +1,72 @@
+/* Macros for using symbol sets for running lists of functions.
+ Copyright (C) 1994, 1995, 1997, 2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SET_HOOKS_H
+#define _SET_HOOKS_H 1
+
+#define __need_size_t
+#include <stddef.h>
+// #include <sys/cdefs.h>
+#define __unbounded
+
+#ifdef symbol_set_define
+/* Define a hook variable called NAME. Functions put on this hook take
+ arguments described by PROTO. Use `text_set_element (NAME, FUNCTION)'
+ from gnu-stabs.h to add a function to the hook. */
+
+# define DEFINE_HOOK(NAME, PROTO) \
+ typedef void __##NAME##_hook_function_t PROTO; \
+ symbol_set_define (NAME)
+
+# define DECLARE_HOOK(NAME, PROTO) \
+ typedef void __##NAME##_hook_function_t PROTO;\
+ symbol_set_declare (NAME)
+
+/* Run all the functions hooked on the set called NAME.
+ Each function is called like this: `function ARGS'. */
+
+# define RUN_HOOK(NAME, ARGS) \
+do { \
+ void *const *__unbounded ptr; \
+ for (ptr = symbol_set_first_element (NAME); \
+ ! symbol_set_end_p (NAME, ptr); ++ptr) \
+ (*(__##NAME##_hook_function_t *) *ptr) ARGS; \
+} while (0)
+
+/* Define a hook variable with NAME and PROTO, and a function called RUNNER
+ which calls each function on the hook in turn, with ARGS. */
+
+# define DEFINE_HOOK_RUNNER(name, runner, proto, args) \
+DEFINE_HOOK (name, proto); \
+extern void runner proto; void runner proto { RUN_HOOK (name, args); }
+
+#else
+
+/* The system does not provide necessary support for this. */
+# define DEFINE_HOOK(NAME, PROTO)
+
+# define DECLARE_HOOK(NAME, PROTO)
+
+# define RUN_HOOK(NAME, ARGS)
+
+# define DEFINE_HOOK_RUNNER(name, runner, proto, args)
+
+#endif
+
+#endif /* set-hooks.h */
diff --git a/libpthread.a b/libpthread/libpthread.a
index d0e689e9..d0e689e9 100644
--- a/libpthread.a
+++ b/libpthread/libpthread.a
diff --git a/libpthread_pic.a b/libpthread/libpthread_pic.a
index 5673b4e7..5673b4e7 100644
--- a/libpthread_pic.a
+++ b/libpthread/libpthread_pic.a
diff --git a/lockfile.c b/libpthread/lockfile.c
index 040cbfb4..040cbfb4 100644
--- a/lockfile.c
+++ b/libpthread/lockfile.c
diff --git a/not-in-libc.h b/libpthread/not-in-libc.h
index 516d4d13..516d4d13 100644
--- a/not-in-libc.h
+++ b/libpthread/not-in-libc.h
diff --git a/pthread/Versions b/libpthread/pthread/Versions
index e4b4e8bf..e4b4e8bf 100644
--- a/pthread/Versions
+++ b/libpthread/pthread/Versions
diff --git a/pthread/cthreads-compat.c b/libpthread/pthread/cthreads-compat.c
index e0536ef2..e0536ef2 100644
--- a/pthread/cthreads-compat.c
+++ b/libpthread/pthread/cthreads-compat.c
diff --git a/pthread/pt-alloc.c b/libpthread/pthread/pt-alloc.c
index 6af2da92..6af2da92 100644
--- a/pthread/pt-alloc.c
+++ b/libpthread/pthread/pt-alloc.c
diff --git a/pthread/pt-cancel.c b/libpthread/pthread/pt-cancel.c
index d19c557d..d19c557d 100644
--- a/pthread/pt-cancel.c
+++ b/libpthread/pthread/pt-cancel.c
diff --git a/pthread/pt-cleanup.c b/libpthread/pthread/pt-cleanup.c
index 58865aa4..58865aa4 100644
--- a/pthread/pt-cleanup.c
+++ b/libpthread/pthread/pt-cleanup.c
diff --git a/pthread/pt-create.c b/libpthread/pthread/pt-create.c
index 8f62b78e..8f62b78e 100644
--- a/pthread/pt-create.c
+++ b/libpthread/pthread/pt-create.c
diff --git a/pthread/pt-dealloc.c b/libpthread/pthread/pt-dealloc.c
index 92fe1fda..92fe1fda 100644
--- a/pthread/pt-dealloc.c
+++ b/libpthread/pthread/pt-dealloc.c
diff --git a/pthread/pt-detach.c b/libpthread/pthread/pt-detach.c
index 1e42c452..1e42c452 100644
--- a/pthread/pt-detach.c
+++ b/libpthread/pthread/pt-detach.c
diff --git a/pthread/pt-exit.c b/libpthread/pthread/pt-exit.c
index 5fe0ba86..5fe0ba86 100644
--- a/pthread/pt-exit.c
+++ b/libpthread/pthread/pt-exit.c
diff --git a/pthread/pt-getattr.c b/libpthread/pthread/pt-getattr.c
index 24599c6e..24599c6e 100644
--- a/pthread/pt-getattr.c
+++ b/libpthread/pthread/pt-getattr.c
diff --git a/pthread/pt-initialize.c b/libpthread/pthread/pt-initialize.c
index cf32b8b5..cf32b8b5 100644
--- a/pthread/pt-initialize.c
+++ b/libpthread/pthread/pt-initialize.c
diff --git a/pthread/pt-internal.h b/libpthread/pthread/pt-internal.h
index cb441d09..cb441d09 100644
--- a/pthread/pt-internal.h
+++ b/libpthread/pthread/pt-internal.h
diff --git a/pthread/pt-join.c b/libpthread/pthread/pt-join.c
index 153058b5..153058b5 100644
--- a/pthread/pt-join.c
+++ b/libpthread/pthread/pt-join.c
diff --git a/pthread/pt-self.c b/libpthread/pthread/pt-self.c
index 49768643..49768643 100644
--- a/pthread/pt-self.c
+++ b/libpthread/pthread/pt-self.c
diff --git a/pthread/pt-setcancelstate.c b/libpthread/pthread/pt-setcancelstate.c
index ded58922..ded58922 100644
--- a/pthread/pt-setcancelstate.c
+++ b/libpthread/pthread/pt-setcancelstate.c
diff --git a/pthread/pt-setcanceltype.c b/libpthread/pthread/pt-setcanceltype.c
index 9511c991..9511c991 100644
--- a/pthread/pt-setcanceltype.c
+++ b/libpthread/pthread/pt-setcanceltype.c
diff --git a/pthread/pt-sigmask.c b/libpthread/pthread/pt-sigmask.c
index 1b53873e..1b53873e 100644
--- a/pthread/pt-sigmask.c
+++ b/libpthread/pthread/pt-sigmask.c
diff --git a/pthread/pt-spin-inlines.c b/libpthread/pthread/pt-spin-inlines.c
index cfb21dd3..cfb21dd3 100644
--- a/pthread/pt-spin-inlines.c
+++ b/libpthread/pthread/pt-spin-inlines.c
diff --git a/pthread/pt-testcancel.c b/libpthread/pthread/pt-testcancel.c
index 01f1ac9c..01f1ac9c 100644
--- a/pthread/pt-testcancel.c
+++ b/libpthread/pthread/pt-testcancel.c
diff --git a/signal/README b/libpthread/signal/README
index 5487e2e3..5487e2e3 100644
--- a/signal/README
+++ b/libpthread/signal/README
diff --git a/signal/TODO b/libpthread/signal/TODO
index 1148abb3..1148abb3 100644
--- a/signal/TODO
+++ b/libpthread/signal/TODO
diff --git a/signal/kill.c b/libpthread/signal/kill.c
index 27c9c32a..27c9c32a 100644
--- a/signal/kill.c
+++ b/libpthread/signal/kill.c
diff --git a/signal/pt-kill-siginfo-np.c b/libpthread/signal/pt-kill-siginfo-np.c
index 9bdf6cc4..9bdf6cc4 100644
--- a/signal/pt-kill-siginfo-np.c
+++ b/libpthread/signal/pt-kill-siginfo-np.c
diff --git a/signal/sig-internal.c b/libpthread/signal/sig-internal.c
index f73f38b4..f73f38b4 100644
--- a/signal/sig-internal.c
+++ b/libpthread/signal/sig-internal.c
diff --git a/signal/sig-internal.h b/libpthread/signal/sig-internal.h
index 6c86c796..6c86c796 100644
--- a/signal/sig-internal.h
+++ b/libpthread/signal/sig-internal.h
diff --git a/signal/sigaction.c b/libpthread/signal/sigaction.c
index 0126c99d..0126c99d 100644
--- a/signal/sigaction.c
+++ b/libpthread/signal/sigaction.c
diff --git a/signal/sigaltstack.c b/libpthread/signal/sigaltstack.c
index 8334811a..8334811a 100644
--- a/signal/sigaltstack.c
+++ b/libpthread/signal/sigaltstack.c
diff --git a/signal/signal-dispatch.c b/libpthread/signal/signal-dispatch.c
index 40440b70..40440b70 100644
--- a/signal/signal-dispatch.c
+++ b/libpthread/signal/signal-dispatch.c
diff --git a/signal/signal.h b/libpthread/signal/signal.h
index a33d995c..a33d995c 100644
--- a/signal/signal.h
+++ b/libpthread/signal/signal.h
diff --git a/signal/sigpending.c b/libpthread/signal/sigpending.c
index 609b55d6..609b55d6 100644
--- a/signal/sigpending.c
+++ b/libpthread/signal/sigpending.c
diff --git a/signal/sigsuspend.c b/libpthread/signal/sigsuspend.c
index 73cf12a1..73cf12a1 100644
--- a/signal/sigsuspend.c
+++ b/libpthread/signal/sigsuspend.c
diff --git a/signal/sigtimedwait.c b/libpthread/signal/sigtimedwait.c
index 52cd0176..52cd0176 100644
--- a/signal/sigtimedwait.c
+++ b/libpthread/signal/sigtimedwait.c
diff --git a/signal/sigwaiter.c b/libpthread/signal/sigwaiter.c
index 8d041ac1..8d041ac1 100644
--- a/signal/sigwaiter.c
+++ b/libpthread/signal/sigwaiter.c
diff --git a/signal/sigwaitinfo.c b/libpthread/signal/sigwaitinfo.c
index 1b47079e..1b47079e 100644
--- a/signal/sigwaitinfo.c
+++ b/libpthread/signal/sigwaitinfo.c
diff --git a/sysdeps/generic/bits/barrier-attr.h b/libpthread/sysdeps/generic/bits/barrier-attr.h
index a9900b71..a9900b71 100644
--- a/sysdeps/generic/bits/barrier-attr.h
+++ b/libpthread/sysdeps/generic/bits/barrier-attr.h
diff --git a/sysdeps/generic/bits/barrier.h b/libpthread/sysdeps/generic/bits/barrier.h
index 5e559312..5e559312 100644
--- a/sysdeps/generic/bits/barrier.h
+++ b/libpthread/sysdeps/generic/bits/barrier.h
diff --git a/sysdeps/generic/bits/cancelation.h b/libpthread/sysdeps/generic/bits/cancelation.h
index f446d595..f446d595 100644
--- a/sysdeps/generic/bits/cancelation.h
+++ b/libpthread/sysdeps/generic/bits/cancelation.h
diff --git a/sysdeps/generic/bits/condition-attr.h b/libpthread/sysdeps/generic/bits/condition-attr.h
index a1311286..a1311286 100644
--- a/sysdeps/generic/bits/condition-attr.h
+++ b/libpthread/sysdeps/generic/bits/condition-attr.h
diff --git a/sysdeps/generic/bits/condition.h b/libpthread/sysdeps/generic/bits/condition.h
index bf13adab..bf13adab 100644
--- a/sysdeps/generic/bits/condition.h
+++ b/libpthread/sysdeps/generic/bits/condition.h
diff --git a/sysdeps/generic/bits/mutex-attr.h b/libpthread/sysdeps/generic/bits/mutex-attr.h
index 9161cdab..9161cdab 100644
--- a/sysdeps/generic/bits/mutex-attr.h
+++ b/libpthread/sysdeps/generic/bits/mutex-attr.h
diff --git a/sysdeps/generic/bits/mutex.h b/libpthread/sysdeps/generic/bits/mutex.h
index 86068cf5..86068cf5 100644
--- a/sysdeps/generic/bits/mutex.h
+++ b/libpthread/sysdeps/generic/bits/mutex.h
diff --git a/sysdeps/generic/bits/once.h b/libpthread/sysdeps/generic/bits/once.h
index f4985d6f..f4985d6f 100644
--- a/sysdeps/generic/bits/once.h
+++ b/libpthread/sysdeps/generic/bits/once.h
diff --git a/sysdeps/generic/bits/pthread-np.h b/libpthread/sysdeps/generic/bits/pthread-np.h
index d5ddbb05..d5ddbb05 100644
--- a/sysdeps/generic/bits/pthread-np.h
+++ b/libpthread/sysdeps/generic/bits/pthread-np.h
diff --git a/sysdeps/generic/bits/pthread.h b/libpthread/sysdeps/generic/bits/pthread.h
index 80e6b096..80e6b096 100644
--- a/sysdeps/generic/bits/pthread.h
+++ b/libpthread/sysdeps/generic/bits/pthread.h
diff --git a/sysdeps/generic/bits/pthreadtypes.h b/libpthread/sysdeps/generic/bits/pthreadtypes.h
index e5cbfd2a..e5cbfd2a 100644
--- a/sysdeps/generic/bits/pthreadtypes.h
+++ b/libpthread/sysdeps/generic/bits/pthreadtypes.h
diff --git a/sysdeps/generic/bits/rwlock-attr.h b/libpthread/sysdeps/generic/bits/rwlock-attr.h
index dba99f1d..dba99f1d 100644
--- a/sysdeps/generic/bits/rwlock-attr.h
+++ b/libpthread/sysdeps/generic/bits/rwlock-attr.h
diff --git a/sysdeps/generic/bits/rwlock.h b/libpthread/sysdeps/generic/bits/rwlock.h
index af6b1c86..af6b1c86 100644
--- a/sysdeps/generic/bits/rwlock.h
+++ b/libpthread/sysdeps/generic/bits/rwlock.h
diff --git a/sysdeps/generic/bits/semaphore.h b/libpthread/sysdeps/generic/bits/semaphore.h
index 5e987c15..5e987c15 100644
--- a/sysdeps/generic/bits/semaphore.h
+++ b/libpthread/sysdeps/generic/bits/semaphore.h
diff --git a/sysdeps/generic/bits/thread-attr.h b/libpthread/sysdeps/generic/bits/thread-attr.h
index c3a93fde..c3a93fde 100644
--- a/sysdeps/generic/bits/thread-attr.h
+++ b/libpthread/sysdeps/generic/bits/thread-attr.h
diff --git a/sysdeps/generic/bits/thread-specific.h b/libpthread/sysdeps/generic/bits/thread-specific.h
index b42d99e7..b42d99e7 100644
--- a/sysdeps/generic/bits/thread-specific.h
+++ b/libpthread/sysdeps/generic/bits/thread-specific.h
diff --git a/sysdeps/generic/killpg.c b/libpthread/sysdeps/generic/killpg.c
index 7f7ed87d..7f7ed87d 100644
--- a/sysdeps/generic/killpg.c
+++ b/libpthread/sysdeps/generic/killpg.c
diff --git a/sysdeps/generic/pt-atfork.c b/libpthread/sysdeps/generic/pt-atfork.c
index 32e1e78c..32e1e78c 100644
--- a/sysdeps/generic/pt-atfork.c
+++ b/libpthread/sysdeps/generic/pt-atfork.c
diff --git a/sysdeps/generic/pt-attr-destroy.c b/libpthread/sysdeps/generic/pt-attr-destroy.c
index c4b9aa54..c4b9aa54 100644
--- a/sysdeps/generic/pt-attr-destroy.c
+++ b/libpthread/sysdeps/generic/pt-attr-destroy.c
diff --git a/sysdeps/generic/pt-attr-getdetachstate.c b/libpthread/sysdeps/generic/pt-attr-getdetachstate.c
index be406f1d..be406f1d 100644
--- a/sysdeps/generic/pt-attr-getdetachstate.c
+++ b/libpthread/sysdeps/generic/pt-attr-getdetachstate.c
diff --git a/sysdeps/generic/pt-attr-getguardsize.c b/libpthread/sysdeps/generic/pt-attr-getguardsize.c
index c1d9f13e..c1d9f13e 100644
--- a/sysdeps/generic/pt-attr-getguardsize.c
+++ b/libpthread/sysdeps/generic/pt-attr-getguardsize.c
diff --git a/sysdeps/generic/pt-attr-getinheritsched.c b/libpthread/sysdeps/generic/pt-attr-getinheritsched.c
index cca4e3d7..cca4e3d7 100644
--- a/sysdeps/generic/pt-attr-getinheritsched.c
+++ b/libpthread/sysdeps/generic/pt-attr-getinheritsched.c
diff --git a/sysdeps/generic/pt-attr-getschedparam.c b/libpthread/sysdeps/generic/pt-attr-getschedparam.c
index 25afebd0..25afebd0 100644
--- a/sysdeps/generic/pt-attr-getschedparam.c
+++ b/libpthread/sysdeps/generic/pt-attr-getschedparam.c
diff --git a/sysdeps/generic/pt-attr-getschedpolicy.c b/libpthread/sysdeps/generic/pt-attr-getschedpolicy.c
index 4349a238..4349a238 100644
--- a/sysdeps/generic/pt-attr-getschedpolicy.c
+++ b/libpthread/sysdeps/generic/pt-attr-getschedpolicy.c
diff --git a/sysdeps/generic/pt-attr-getscope.c b/libpthread/sysdeps/generic/pt-attr-getscope.c
index 97198fa5..97198fa5 100644
--- a/sysdeps/generic/pt-attr-getscope.c
+++ b/libpthread/sysdeps/generic/pt-attr-getscope.c
diff --git a/sysdeps/generic/pt-attr-getstack.c b/libpthread/sysdeps/generic/pt-attr-getstack.c
index 7beb79f0..7beb79f0 100644
--- a/sysdeps/generic/pt-attr-getstack.c
+++ b/libpthread/sysdeps/generic/pt-attr-getstack.c
diff --git a/sysdeps/generic/pt-attr-getstackaddr.c b/libpthread/sysdeps/generic/pt-attr-getstackaddr.c
index d43eeff7..d43eeff7 100644
--- a/sysdeps/generic/pt-attr-getstackaddr.c
+++ b/libpthread/sysdeps/generic/pt-attr-getstackaddr.c
diff --git a/sysdeps/generic/pt-attr-getstacksize.c b/libpthread/sysdeps/generic/pt-attr-getstacksize.c
index c1bc6617..c1bc6617 100644
--- a/sysdeps/generic/pt-attr-getstacksize.c
+++ b/libpthread/sysdeps/generic/pt-attr-getstacksize.c
diff --git a/sysdeps/generic/pt-attr-init.c b/libpthread/sysdeps/generic/pt-attr-init.c
index 6a930e30..6a930e30 100644
--- a/sysdeps/generic/pt-attr-init.c
+++ b/libpthread/sysdeps/generic/pt-attr-init.c
diff --git a/sysdeps/generic/pt-attr-setdetachstate.c b/libpthread/sysdeps/generic/pt-attr-setdetachstate.c
index 688ba5d6..688ba5d6 100644
--- a/sysdeps/generic/pt-attr-setdetachstate.c
+++ b/libpthread/sysdeps/generic/pt-attr-setdetachstate.c
diff --git a/sysdeps/generic/pt-attr-setguardsize.c b/libpthread/sysdeps/generic/pt-attr-setguardsize.c
index b2ba0f0f..b2ba0f0f 100644
--- a/sysdeps/generic/pt-attr-setguardsize.c
+++ b/libpthread/sysdeps/generic/pt-attr-setguardsize.c
diff --git a/sysdeps/generic/pt-attr-setinheritsched.c b/libpthread/sysdeps/generic/pt-attr-setinheritsched.c
index e9012c58..e9012c58 100644
--- a/sysdeps/generic/pt-attr-setinheritsched.c
+++ b/libpthread/sysdeps/generic/pt-attr-setinheritsched.c
diff --git a/sysdeps/generic/pt-attr-setschedparam.c b/libpthread/sysdeps/generic/pt-attr-setschedparam.c
index 18a575ec..18a575ec 100644
--- a/sysdeps/generic/pt-attr-setschedparam.c
+++ b/libpthread/sysdeps/generic/pt-attr-setschedparam.c
diff --git a/sysdeps/generic/pt-attr-setschedpolicy.c b/libpthread/sysdeps/generic/pt-attr-setschedpolicy.c
index e481d04c..e481d04c 100644
--- a/sysdeps/generic/pt-attr-setschedpolicy.c
+++ b/libpthread/sysdeps/generic/pt-attr-setschedpolicy.c
diff --git a/sysdeps/generic/pt-attr-setscope.c b/libpthread/sysdeps/generic/pt-attr-setscope.c
index c74a4f67..c74a4f67 100644
--- a/sysdeps/generic/pt-attr-setscope.c
+++ b/libpthread/sysdeps/generic/pt-attr-setscope.c
diff --git a/sysdeps/generic/pt-attr-setstack.c b/libpthread/sysdeps/generic/pt-attr-setstack.c
index 360d27a3..360d27a3 100644
--- a/sysdeps/generic/pt-attr-setstack.c
+++ b/libpthread/sysdeps/generic/pt-attr-setstack.c
diff --git a/sysdeps/generic/pt-attr-setstackaddr.c b/libpthread/sysdeps/generic/pt-attr-setstackaddr.c
index 431f2d0c..431f2d0c 100644
--- a/sysdeps/generic/pt-attr-setstackaddr.c
+++ b/libpthread/sysdeps/generic/pt-attr-setstackaddr.c
diff --git a/sysdeps/generic/pt-attr-setstacksize.c b/libpthread/sysdeps/generic/pt-attr-setstacksize.c
index d0e51022..d0e51022 100644
--- a/sysdeps/generic/pt-attr-setstacksize.c
+++ b/libpthread/sysdeps/generic/pt-attr-setstacksize.c
diff --git a/sysdeps/generic/pt-attr.c b/libpthread/sysdeps/generic/pt-attr.c
index 769f292a..769f292a 100644
--- a/sysdeps/generic/pt-attr.c
+++ b/libpthread/sysdeps/generic/pt-attr.c
diff --git a/sysdeps/generic/pt-barrier-destroy.c b/libpthread/sysdeps/generic/pt-barrier-destroy.c
index 01b938b4..01b938b4 100644
--- a/sysdeps/generic/pt-barrier-destroy.c
+++ b/libpthread/sysdeps/generic/pt-barrier-destroy.c
diff --git a/sysdeps/generic/pt-barrier-init.c b/libpthread/sysdeps/generic/pt-barrier-init.c
index c42b3bb6..c42b3bb6 100644
--- a/sysdeps/generic/pt-barrier-init.c
+++ b/libpthread/sysdeps/generic/pt-barrier-init.c
diff --git a/sysdeps/generic/pt-barrier-wait.c b/libpthread/sysdeps/generic/pt-barrier-wait.c
index f1de250a..f1de250a 100644
--- a/sysdeps/generic/pt-barrier-wait.c
+++ b/libpthread/sysdeps/generic/pt-barrier-wait.c
diff --git a/sysdeps/generic/pt-barrier.c b/libpthread/sysdeps/generic/pt-barrier.c
index d772719f..d772719f 100644
--- a/sysdeps/generic/pt-barrier.c
+++ b/libpthread/sysdeps/generic/pt-barrier.c
diff --git a/sysdeps/generic/pt-barrierattr-destroy.c b/libpthread/sysdeps/generic/pt-barrierattr-destroy.c
index eb396347..eb396347 100644
--- a/sysdeps/generic/pt-barrierattr-destroy.c
+++ b/libpthread/sysdeps/generic/pt-barrierattr-destroy.c
diff --git a/sysdeps/generic/pt-barrierattr-getpshared.c b/libpthread/sysdeps/generic/pt-barrierattr-getpshared.c
index ed2cdd24..ed2cdd24 100644
--- a/sysdeps/generic/pt-barrierattr-getpshared.c
+++ b/libpthread/sysdeps/generic/pt-barrierattr-getpshared.c
diff --git a/sysdeps/generic/pt-barrierattr-init.c b/libpthread/sysdeps/generic/pt-barrierattr-init.c
index 45f16cc8..45f16cc8 100644
--- a/sysdeps/generic/pt-barrierattr-init.c
+++ b/libpthread/sysdeps/generic/pt-barrierattr-init.c
diff --git a/sysdeps/generic/pt-barrierattr-setpshared.c b/libpthread/sysdeps/generic/pt-barrierattr-setpshared.c
index 84ef2df8..84ef2df8 100644
--- a/sysdeps/generic/pt-barrierattr-setpshared.c
+++ b/libpthread/sysdeps/generic/pt-barrierattr-setpshared.c
diff --git a/sysdeps/generic/pt-cond-brdcast.c b/libpthread/sysdeps/generic/pt-cond-brdcast.c
index 3f55e33e..3f55e33e 100644
--- a/sysdeps/generic/pt-cond-brdcast.c
+++ b/libpthread/sysdeps/generic/pt-cond-brdcast.c
diff --git a/sysdeps/generic/pt-cond-destroy.c b/libpthread/sysdeps/generic/pt-cond-destroy.c
index eba47784..eba47784 100644
--- a/sysdeps/generic/pt-cond-destroy.c
+++ b/libpthread/sysdeps/generic/pt-cond-destroy.c
diff --git a/sysdeps/generic/pt-cond-init.c b/libpthread/sysdeps/generic/pt-cond-init.c
index b9e9fb7a..b9e9fb7a 100644
--- a/sysdeps/generic/pt-cond-init.c
+++ b/libpthread/sysdeps/generic/pt-cond-init.c
diff --git a/sysdeps/generic/pt-cond-signal.c b/libpthread/sysdeps/generic/pt-cond-signal.c
index c5e1bc1d..c5e1bc1d 100644
--- a/sysdeps/generic/pt-cond-signal.c
+++ b/libpthread/sysdeps/generic/pt-cond-signal.c
diff --git a/sysdeps/generic/pt-cond-timedwait.c b/libpthread/sysdeps/generic/pt-cond-timedwait.c
index c10bdb30..c10bdb30 100644
--- a/sysdeps/generic/pt-cond-timedwait.c
+++ b/libpthread/sysdeps/generic/pt-cond-timedwait.c
diff --git a/sysdeps/generic/pt-cond-wait.c b/libpthread/sysdeps/generic/pt-cond-wait.c
index a03476df..a03476df 100644
--- a/sysdeps/generic/pt-cond-wait.c
+++ b/libpthread/sysdeps/generic/pt-cond-wait.c
diff --git a/sysdeps/generic/pt-cond.c b/libpthread/sysdeps/generic/pt-cond.c
index 033e767f..033e767f 100644
--- a/sysdeps/generic/pt-cond.c
+++ b/libpthread/sysdeps/generic/pt-cond.c
diff --git a/sysdeps/generic/pt-condattr-destroy.c b/libpthread/sysdeps/generic/pt-condattr-destroy.c
index c8fd71b9..c8fd71b9 100644
--- a/sysdeps/generic/pt-condattr-destroy.c
+++ b/libpthread/sysdeps/generic/pt-condattr-destroy.c
diff --git a/sysdeps/generic/pt-condattr-getclock.c b/libpthread/sysdeps/generic/pt-condattr-getclock.c
index 5b9f8893..5b9f8893 100644
--- a/sysdeps/generic/pt-condattr-getclock.c
+++ b/libpthread/sysdeps/generic/pt-condattr-getclock.c
diff --git a/sysdeps/generic/pt-condattr-getpshared.c b/libpthread/sysdeps/generic/pt-condattr-getpshared.c
index c072a507..c072a507 100644
--- a/sysdeps/generic/pt-condattr-getpshared.c
+++ b/libpthread/sysdeps/generic/pt-condattr-getpshared.c
diff --git a/sysdeps/generic/pt-condattr-init.c b/libpthread/sysdeps/generic/pt-condattr-init.c
index cf9e1989..cf9e1989 100644
--- a/sysdeps/generic/pt-condattr-init.c
+++ b/libpthread/sysdeps/generic/pt-condattr-init.c
diff --git a/sysdeps/generic/pt-condattr-setclock.c b/libpthread/sysdeps/generic/pt-condattr-setclock.c
index 984c17e2..984c17e2 100644
--- a/sysdeps/generic/pt-condattr-setclock.c
+++ b/libpthread/sysdeps/generic/pt-condattr-setclock.c
diff --git a/sysdeps/generic/pt-condattr-setpshared.c b/libpthread/sysdeps/generic/pt-condattr-setpshared.c
index b9f0af83..b9f0af83 100644
--- a/sysdeps/generic/pt-condattr-setpshared.c
+++ b/libpthread/sysdeps/generic/pt-condattr-setpshared.c
diff --git a/sysdeps/generic/pt-destroy-specific.c b/libpthread/sysdeps/generic/pt-destroy-specific.c
index b627f872..b627f872 100644
--- a/sysdeps/generic/pt-destroy-specific.c
+++ b/libpthread/sysdeps/generic/pt-destroy-specific.c
diff --git a/sysdeps/generic/pt-equal.c b/libpthread/sysdeps/generic/pt-equal.c
index 8fbc519c..8fbc519c 100644
--- a/sysdeps/generic/pt-equal.c
+++ b/libpthread/sysdeps/generic/pt-equal.c
diff --git a/sysdeps/generic/pt-getconcurrency.c b/libpthread/sysdeps/generic/pt-getconcurrency.c
index b55c8eef..b55c8eef 100644
--- a/sysdeps/generic/pt-getconcurrency.c
+++ b/libpthread/sysdeps/generic/pt-getconcurrency.c
diff --git a/sysdeps/generic/pt-getcpuclockid.c b/libpthread/sysdeps/generic/pt-getcpuclockid.c
index 81f6aabd..81f6aabd 100644
--- a/sysdeps/generic/pt-getcpuclockid.c
+++ b/libpthread/sysdeps/generic/pt-getcpuclockid.c
diff --git a/sysdeps/generic/pt-getschedparam.c b/libpthread/sysdeps/generic/pt-getschedparam.c
index c128d02e..c128d02e 100644
--- a/sysdeps/generic/pt-getschedparam.c
+++ b/libpthread/sysdeps/generic/pt-getschedparam.c
diff --git a/sysdeps/generic/pt-getspecific.c b/libpthread/sysdeps/generic/pt-getspecific.c
index 2a7c4a9e..2a7c4a9e 100644
--- a/sysdeps/generic/pt-getspecific.c
+++ b/libpthread/sysdeps/generic/pt-getspecific.c
diff --git a/sysdeps/generic/pt-init-specific.c b/libpthread/sysdeps/generic/pt-init-specific.c
index 00744fb6..00744fb6 100644
--- a/sysdeps/generic/pt-init-specific.c
+++ b/libpthread/sysdeps/generic/pt-init-specific.c
diff --git a/sysdeps/generic/pt-key-create.c b/libpthread/sysdeps/generic/pt-key-create.c
index 7ef4b991..7ef4b991 100644
--- a/sysdeps/generic/pt-key-create.c
+++ b/libpthread/sysdeps/generic/pt-key-create.c
diff --git a/sysdeps/generic/pt-key-delete.c b/libpthread/sysdeps/generic/pt-key-delete.c
index 6c86f8e2..6c86f8e2 100644
--- a/sysdeps/generic/pt-key-delete.c
+++ b/libpthread/sysdeps/generic/pt-key-delete.c
diff --git a/sysdeps/generic/pt-key.h b/libpthread/sysdeps/generic/pt-key.h
index 544eb20f..544eb20f 100644
--- a/sysdeps/generic/pt-key.h
+++ b/libpthread/sysdeps/generic/pt-key.h
diff --git a/sysdeps/generic/pt-kill.c b/libpthread/sysdeps/generic/pt-kill.c
index 0dfac344..0dfac344 100644
--- a/sysdeps/generic/pt-kill.c
+++ b/libpthread/sysdeps/generic/pt-kill.c
diff --git a/sysdeps/generic/pt-mutex-destroy.c b/libpthread/sysdeps/generic/pt-mutex-destroy.c
index b0ca00f7..b0ca00f7 100644
--- a/sysdeps/generic/pt-mutex-destroy.c
+++ b/libpthread/sysdeps/generic/pt-mutex-destroy.c
diff --git a/sysdeps/generic/pt-mutex-getprioceiling.c b/libpthread/sysdeps/generic/pt-mutex-getprioceiling.c
index eb51639b..eb51639b 100644
--- a/sysdeps/generic/pt-mutex-getprioceiling.c
+++ b/libpthread/sysdeps/generic/pt-mutex-getprioceiling.c
diff --git a/sysdeps/generic/pt-mutex-init.c b/libpthread/sysdeps/generic/pt-mutex-init.c
index a818fe3a..a818fe3a 100644
--- a/sysdeps/generic/pt-mutex-init.c
+++ b/libpthread/sysdeps/generic/pt-mutex-init.c
diff --git a/sysdeps/generic/pt-mutex-lock.c b/libpthread/sysdeps/generic/pt-mutex-lock.c
index 528e593f..528e593f 100644
--- a/sysdeps/generic/pt-mutex-lock.c
+++ b/libpthread/sysdeps/generic/pt-mutex-lock.c
diff --git a/sysdeps/generic/pt-mutex-setprioceiling.c b/libpthread/sysdeps/generic/pt-mutex-setprioceiling.c
index 9fa8e50d..9fa8e50d 100644
--- a/sysdeps/generic/pt-mutex-setprioceiling.c
+++ b/libpthread/sysdeps/generic/pt-mutex-setprioceiling.c
diff --git a/sysdeps/generic/pt-mutex-timedlock.c b/libpthread/sysdeps/generic/pt-mutex-timedlock.c
index ee432192..ee432192 100644
--- a/sysdeps/generic/pt-mutex-timedlock.c
+++ b/libpthread/sysdeps/generic/pt-mutex-timedlock.c
diff --git a/sysdeps/generic/pt-mutex-transfer-np.c b/libpthread/sysdeps/generic/pt-mutex-transfer-np.c
index 7796ac4f..7796ac4f 100644
--- a/sysdeps/generic/pt-mutex-transfer-np.c
+++ b/libpthread/sysdeps/generic/pt-mutex-transfer-np.c
diff --git a/sysdeps/generic/pt-mutex-trylock.c b/libpthread/sysdeps/generic/pt-mutex-trylock.c
index 5264dc7b..5264dc7b 100644
--- a/sysdeps/generic/pt-mutex-trylock.c
+++ b/libpthread/sysdeps/generic/pt-mutex-trylock.c
diff --git a/sysdeps/generic/pt-mutex-unlock.c b/libpthread/sysdeps/generic/pt-mutex-unlock.c
index 7645fd4c..7645fd4c 100644
--- a/sysdeps/generic/pt-mutex-unlock.c
+++ b/libpthread/sysdeps/generic/pt-mutex-unlock.c
diff --git a/sysdeps/generic/pt-mutexattr-destroy.c b/libpthread/sysdeps/generic/pt-mutexattr-destroy.c
index fe7e95d2..fe7e95d2 100644
--- a/sysdeps/generic/pt-mutexattr-destroy.c
+++ b/libpthread/sysdeps/generic/pt-mutexattr-destroy.c
diff --git a/sysdeps/generic/pt-mutexattr-getprioceiling.c b/libpthread/sysdeps/generic/pt-mutexattr-getprioceiling.c
index d03d7192..d03d7192 100644
--- a/sysdeps/generic/pt-mutexattr-getprioceiling.c
+++ b/libpthread/sysdeps/generic/pt-mutexattr-getprioceiling.c
diff --git a/sysdeps/generic/pt-mutexattr-getprotocol.c b/libpthread/sysdeps/generic/pt-mutexattr-getprotocol.c
index d75021a3..d75021a3 100644
--- a/sysdeps/generic/pt-mutexattr-getprotocol.c
+++ b/libpthread/sysdeps/generic/pt-mutexattr-getprotocol.c
diff --git a/sysdeps/generic/pt-mutexattr-getpshared.c b/libpthread/sysdeps/generic/pt-mutexattr-getpshared.c
index 0dad13b8..0dad13b8 100644
--- a/sysdeps/generic/pt-mutexattr-getpshared.c
+++ b/libpthread/sysdeps/generic/pt-mutexattr-getpshared.c
diff --git a/sysdeps/generic/pt-mutexattr-gettype.c b/libpthread/sysdeps/generic/pt-mutexattr-gettype.c
index ff2caea4..ff2caea4 100644
--- a/sysdeps/generic/pt-mutexattr-gettype.c
+++ b/libpthread/sysdeps/generic/pt-mutexattr-gettype.c
diff --git a/sysdeps/generic/pt-mutexattr-init.c b/libpthread/sysdeps/generic/pt-mutexattr-init.c
index 2f23673c..2f23673c 100644
--- a/sysdeps/generic/pt-mutexattr-init.c
+++ b/libpthread/sysdeps/generic/pt-mutexattr-init.c
diff --git a/sysdeps/generic/pt-mutexattr-setprioceiling.c b/libpthread/sysdeps/generic/pt-mutexattr-setprioceiling.c
index a9bbd327..a9bbd327 100644
--- a/sysdeps/generic/pt-mutexattr-setprioceiling.c
+++ b/libpthread/sysdeps/generic/pt-mutexattr-setprioceiling.c
diff --git a/sysdeps/generic/pt-mutexattr-setprotocol.c b/libpthread/sysdeps/generic/pt-mutexattr-setprotocol.c
index 9a0d1b1f..9a0d1b1f 100644
--- a/sysdeps/generic/pt-mutexattr-setprotocol.c
+++ b/libpthread/sysdeps/generic/pt-mutexattr-setprotocol.c
diff --git a/sysdeps/generic/pt-mutexattr-setpshared.c b/libpthread/sysdeps/generic/pt-mutexattr-setpshared.c
index bcbc4d91..bcbc4d91 100644
--- a/sysdeps/generic/pt-mutexattr-setpshared.c
+++ b/libpthread/sysdeps/generic/pt-mutexattr-setpshared.c
diff --git a/sysdeps/generic/pt-mutexattr-settype.c b/libpthread/sysdeps/generic/pt-mutexattr-settype.c
index e7ae213a..e7ae213a 100644
--- a/sysdeps/generic/pt-mutexattr-settype.c
+++ b/libpthread/sysdeps/generic/pt-mutexattr-settype.c
diff --git a/sysdeps/generic/pt-mutexattr.c b/libpthread/sysdeps/generic/pt-mutexattr.c
index d80a7d74..d80a7d74 100644
--- a/sysdeps/generic/pt-mutexattr.c
+++ b/libpthread/sysdeps/generic/pt-mutexattr.c
diff --git a/sysdeps/generic/pt-once.c b/libpthread/sysdeps/generic/pt-once.c
index 5be5e484..5be5e484 100644
--- a/sysdeps/generic/pt-once.c
+++ b/libpthread/sysdeps/generic/pt-once.c
diff --git a/sysdeps/generic/pt-rwlock-attr.c b/libpthread/sysdeps/generic/pt-rwlock-attr.c
index 1587feef..1587feef 100644
--- a/sysdeps/generic/pt-rwlock-attr.c
+++ b/libpthread/sysdeps/generic/pt-rwlock-attr.c
diff --git a/sysdeps/generic/pt-rwlock-destroy.c b/libpthread/sysdeps/generic/pt-rwlock-destroy.c
index 045eebd8..045eebd8 100644
--- a/sysdeps/generic/pt-rwlock-destroy.c
+++ b/libpthread/sysdeps/generic/pt-rwlock-destroy.c
diff --git a/sysdeps/generic/pt-rwlock-init.c b/libpthread/sysdeps/generic/pt-rwlock-init.c
index c9ff9b28..c9ff9b28 100644
--- a/sysdeps/generic/pt-rwlock-init.c
+++ b/libpthread/sysdeps/generic/pt-rwlock-init.c
diff --git a/sysdeps/generic/pt-rwlock-rdlock.c b/libpthread/sysdeps/generic/pt-rwlock-rdlock.c
index 480cf489..480cf489 100644
--- a/sysdeps/generic/pt-rwlock-rdlock.c
+++ b/libpthread/sysdeps/generic/pt-rwlock-rdlock.c
diff --git a/sysdeps/generic/pt-rwlock-timedrdlock.c b/libpthread/sysdeps/generic/pt-rwlock-timedrdlock.c
index ba610fa5..ba610fa5 100644
--- a/sysdeps/generic/pt-rwlock-timedrdlock.c
+++ b/libpthread/sysdeps/generic/pt-rwlock-timedrdlock.c
diff --git a/sysdeps/generic/pt-rwlock-timedwrlock.c b/libpthread/sysdeps/generic/pt-rwlock-timedwrlock.c
index 04eab51f..04eab51f 100644
--- a/sysdeps/generic/pt-rwlock-timedwrlock.c
+++ b/libpthread/sysdeps/generic/pt-rwlock-timedwrlock.c
diff --git a/sysdeps/generic/pt-rwlock-tryrdlock.c b/libpthread/sysdeps/generic/pt-rwlock-tryrdlock.c
index 2419efb1..2419efb1 100644
--- a/sysdeps/generic/pt-rwlock-tryrdlock.c
+++ b/libpthread/sysdeps/generic/pt-rwlock-tryrdlock.c
diff --git a/sysdeps/generic/pt-rwlock-trywrlock.c b/libpthread/sysdeps/generic/pt-rwlock-trywrlock.c
index 6b9c5b56..6b9c5b56 100644
--- a/sysdeps/generic/pt-rwlock-trywrlock.c
+++ b/libpthread/sysdeps/generic/pt-rwlock-trywrlock.c
diff --git a/sysdeps/generic/pt-rwlock-unlock.c b/libpthread/sysdeps/generic/pt-rwlock-unlock.c
index fb23a0b9..fb23a0b9 100644
--- a/sysdeps/generic/pt-rwlock-unlock.c
+++ b/libpthread/sysdeps/generic/pt-rwlock-unlock.c
diff --git a/sysdeps/generic/pt-rwlock-wrlock.c b/libpthread/sysdeps/generic/pt-rwlock-wrlock.c
index be85b906..be85b906 100644
--- a/sysdeps/generic/pt-rwlock-wrlock.c
+++ b/libpthread/sysdeps/generic/pt-rwlock-wrlock.c
diff --git a/sysdeps/generic/pt-rwlockattr-destroy.c b/libpthread/sysdeps/generic/pt-rwlockattr-destroy.c
index eabfcbe8..eabfcbe8 100644
--- a/sysdeps/generic/pt-rwlockattr-destroy.c
+++ b/libpthread/sysdeps/generic/pt-rwlockattr-destroy.c
diff --git a/sysdeps/generic/pt-rwlockattr-getpshared.c b/libpthread/sysdeps/generic/pt-rwlockattr-getpshared.c
index e8752c0c..e8752c0c 100644
--- a/sysdeps/generic/pt-rwlockattr-getpshared.c
+++ b/libpthread/sysdeps/generic/pt-rwlockattr-getpshared.c
diff --git a/sysdeps/generic/pt-rwlockattr-init.c b/libpthread/sysdeps/generic/pt-rwlockattr-init.c
index 34da6bf0..34da6bf0 100644
--- a/sysdeps/generic/pt-rwlockattr-init.c
+++ b/libpthread/sysdeps/generic/pt-rwlockattr-init.c
diff --git a/sysdeps/generic/pt-rwlockattr-setpshared.c b/libpthread/sysdeps/generic/pt-rwlockattr-setpshared.c
index a861d034..a861d034 100644
--- a/sysdeps/generic/pt-rwlockattr-setpshared.c
+++ b/libpthread/sysdeps/generic/pt-rwlockattr-setpshared.c
diff --git a/sysdeps/generic/pt-setconcurrency.c b/libpthread/sysdeps/generic/pt-setconcurrency.c
index cd55b1ba..cd55b1ba 100644
--- a/sysdeps/generic/pt-setconcurrency.c
+++ b/libpthread/sysdeps/generic/pt-setconcurrency.c
diff --git a/sysdeps/generic/pt-setschedparam.c b/libpthread/sysdeps/generic/pt-setschedparam.c
index a70b0796..a70b0796 100644
--- a/sysdeps/generic/pt-setschedparam.c
+++ b/libpthread/sysdeps/generic/pt-setschedparam.c
diff --git a/sysdeps/generic/pt-setschedprio.c b/libpthread/sysdeps/generic/pt-setschedprio.c
index 60668eb1..60668eb1 100644
--- a/sysdeps/generic/pt-setschedprio.c
+++ b/libpthread/sysdeps/generic/pt-setschedprio.c
diff --git a/sysdeps/generic/pt-setspecific.c b/libpthread/sysdeps/generic/pt-setspecific.c
index d520c5df..d520c5df 100644
--- a/sysdeps/generic/pt-setspecific.c
+++ b/libpthread/sysdeps/generic/pt-setspecific.c
diff --git a/sysdeps/generic/pt-startup.c b/libpthread/sysdeps/generic/pt-startup.c
index c21a1819..c21a1819 100644
--- a/sysdeps/generic/pt-startup.c
+++ b/libpthread/sysdeps/generic/pt-startup.c
diff --git a/sysdeps/generic/raise.c b/libpthread/sysdeps/generic/raise.c
index 410f557d..410f557d 100644
--- a/sysdeps/generic/raise.c
+++ b/libpthread/sysdeps/generic/raise.c
diff --git a/sysdeps/generic/sem-close.c b/libpthread/sysdeps/generic/sem-close.c
index 9f48032f..9f48032f 100644
--- a/sysdeps/generic/sem-close.c
+++ b/libpthread/sysdeps/generic/sem-close.c
diff --git a/sysdeps/generic/sem-destroy.c b/libpthread/sysdeps/generic/sem-destroy.c
index 6486599c..6486599c 100644
--- a/sysdeps/generic/sem-destroy.c
+++ b/libpthread/sysdeps/generic/sem-destroy.c
diff --git a/sysdeps/generic/sem-getvalue.c b/libpthread/sysdeps/generic/sem-getvalue.c
index 7762089b..7762089b 100644
--- a/sysdeps/generic/sem-getvalue.c
+++ b/libpthread/sysdeps/generic/sem-getvalue.c
diff --git a/sysdeps/generic/sem-init.c b/libpthread/sysdeps/generic/sem-init.c
index d2414f5d..d2414f5d 100644
--- a/sysdeps/generic/sem-init.c
+++ b/libpthread/sysdeps/generic/sem-init.c
diff --git a/sysdeps/generic/sem-open.c b/libpthread/sysdeps/generic/sem-open.c
index bae87ed0..bae87ed0 100644
--- a/sysdeps/generic/sem-open.c
+++ b/libpthread/sysdeps/generic/sem-open.c
diff --git a/sysdeps/generic/sem-post.c b/libpthread/sysdeps/generic/sem-post.c
index 6d438bf2..6d438bf2 100644
--- a/sysdeps/generic/sem-post.c
+++ b/libpthread/sysdeps/generic/sem-post.c
diff --git a/sysdeps/generic/sem-timedwait.c b/libpthread/sysdeps/generic/sem-timedwait.c
index e34539a9..e34539a9 100644
--- a/sysdeps/generic/sem-timedwait.c
+++ b/libpthread/sysdeps/generic/sem-timedwait.c
diff --git a/sysdeps/generic/sem-trywait.c b/libpthread/sysdeps/generic/sem-trywait.c
index 437e2822..437e2822 100644
--- a/sysdeps/generic/sem-trywait.c
+++ b/libpthread/sysdeps/generic/sem-trywait.c
diff --git a/sysdeps/generic/sem-unlink.c b/libpthread/sysdeps/generic/sem-unlink.c
index 570ed614..570ed614 100644
--- a/sysdeps/generic/sem-unlink.c
+++ b/libpthread/sysdeps/generic/sem-unlink.c
diff --git a/sysdeps/generic/sem-wait.c b/libpthread/sysdeps/generic/sem-wait.c
index 8347480c..8347480c 100644
--- a/sysdeps/generic/sem-wait.c
+++ b/libpthread/sysdeps/generic/sem-wait.c
diff --git a/sysdeps/generic/sigaddset.c b/libpthread/sysdeps/generic/sigaddset.c
index 14edb71c..14edb71c 100644
--- a/sysdeps/generic/sigaddset.c
+++ b/libpthread/sysdeps/generic/sigaddset.c
diff --git a/sysdeps/generic/sigdelset.c b/libpthread/sysdeps/generic/sigdelset.c
index 5456467f..5456467f 100644
--- a/sysdeps/generic/sigdelset.c
+++ b/libpthread/sysdeps/generic/sigdelset.c
diff --git a/sysdeps/generic/sigemptyset.c b/libpthread/sysdeps/generic/sigemptyset.c
index 690c15b6..690c15b6 100644
--- a/sysdeps/generic/sigemptyset.c
+++ b/libpthread/sysdeps/generic/sigemptyset.c
diff --git a/sysdeps/generic/sigfillset.c b/libpthread/sysdeps/generic/sigfillset.c
index f0ac0781..f0ac0781 100644
--- a/sysdeps/generic/sigfillset.c
+++ b/libpthread/sysdeps/generic/sigfillset.c
diff --git a/sysdeps/generic/siginterrupt.c b/libpthread/sysdeps/generic/siginterrupt.c
index 0899efbb..0899efbb 100644
--- a/sysdeps/generic/siginterrupt.c
+++ b/libpthread/sysdeps/generic/siginterrupt.c
diff --git a/sysdeps/generic/sigismember.c b/libpthread/sysdeps/generic/sigismember.c
index b3d65c97..b3d65c97 100644
--- a/sysdeps/generic/sigismember.c
+++ b/libpthread/sysdeps/generic/sigismember.c
diff --git a/sysdeps/generic/signal.c b/libpthread/sysdeps/generic/signal.c
index 7555d0a1..7555d0a1 100644
--- a/sysdeps/generic/signal.c
+++ b/libpthread/sysdeps/generic/signal.c
diff --git a/sysdeps/generic/sigwait.c b/libpthread/sysdeps/generic/sigwait.c
index 7d10bf8b..7d10bf8b 100644
--- a/sysdeps/generic/sigwait.c
+++ b/libpthread/sysdeps/generic/sigwait.c
diff --git a/sysdeps/hurd/pt-destroy-specific.c b/libpthread/sysdeps/hurd/pt-destroy-specific.c
index 23c7fbc0..23c7fbc0 100644
--- a/sysdeps/hurd/pt-destroy-specific.c
+++ b/libpthread/sysdeps/hurd/pt-destroy-specific.c
diff --git a/sysdeps/hurd/pt-getspecific.c b/libpthread/sysdeps/hurd/pt-getspecific.c
index 30605984..30605984 100644
--- a/sysdeps/hurd/pt-getspecific.c
+++ b/libpthread/sysdeps/hurd/pt-getspecific.c
diff --git a/sysdeps/hurd/pt-init-specific.c b/libpthread/sysdeps/hurd/pt-init-specific.c
index c1bacbcb..c1bacbcb 100644
--- a/sysdeps/hurd/pt-init-specific.c
+++ b/libpthread/sysdeps/hurd/pt-init-specific.c
diff --git a/sysdeps/hurd/pt-key-create.c b/libpthread/sysdeps/hurd/pt-key-create.c
index b3e01412..b3e01412 100644
--- a/sysdeps/hurd/pt-key-create.c
+++ b/libpthread/sysdeps/hurd/pt-key-create.c
diff --git a/sysdeps/hurd/pt-key-delete.c b/libpthread/sysdeps/hurd/pt-key-delete.c
index 2426bb11..2426bb11 100644
--- a/sysdeps/hurd/pt-key-delete.c
+++ b/libpthread/sysdeps/hurd/pt-key-delete.c
diff --git a/sysdeps/hurd/pt-key.h b/libpthread/sysdeps/hurd/pt-key.h
index 494e01d7..494e01d7 100644
--- a/sysdeps/hurd/pt-key.h
+++ b/libpthread/sysdeps/hurd/pt-key.h
diff --git a/sysdeps/hurd/pt-kill.c b/libpthread/sysdeps/hurd/pt-kill.c
index f970e065..f970e065 100644
--- a/sysdeps/hurd/pt-kill.c
+++ b/libpthread/sysdeps/hurd/pt-kill.c
diff --git a/sysdeps/hurd/pt-setspecific.c b/libpthread/sysdeps/hurd/pt-setspecific.c
index 89ca4d7f..89ca4d7f 100644
--- a/sysdeps/hurd/pt-setspecific.c
+++ b/libpthread/sysdeps/hurd/pt-setspecific.c
diff --git a/sysdeps/ia32/bits/atomic.h b/libpthread/sysdeps/ia32/bits/atomic.h
index 0dfc1f60..0dfc1f60 100644
--- a/sysdeps/ia32/bits/atomic.h
+++ b/libpthread/sysdeps/ia32/bits/atomic.h
diff --git a/sysdeps/ia32/bits/memory.h b/libpthread/sysdeps/ia32/bits/memory.h
index 932c4086..932c4086 100644
--- a/sysdeps/ia32/bits/memory.h
+++ b/libpthread/sysdeps/ia32/bits/memory.h
diff --git a/sysdeps/ia32/bits/spin-lock-inline.h b/libpthread/sysdeps/ia32/bits/spin-lock-inline.h
index e5ed3def..e5ed3def 100644
--- a/sysdeps/ia32/bits/spin-lock-inline.h
+++ b/libpthread/sysdeps/ia32/bits/spin-lock-inline.h
diff --git a/sysdeps/ia32/bits/spin-lock.h b/libpthread/sysdeps/ia32/bits/spin-lock.h
index 5ae81e18..5ae81e18 100644
--- a/sysdeps/ia32/bits/spin-lock.h
+++ b/libpthread/sysdeps/ia32/bits/spin-lock.h
diff --git a/sysdeps/ia32/machine-sp.h b/libpthread/sysdeps/ia32/machine-sp.h
index cef6ab72..cef6ab72 100644
--- a/sysdeps/ia32/machine-sp.h
+++ b/libpthread/sysdeps/ia32/machine-sp.h
diff --git a/sysdeps/ia32/pt-machdep.h b/libpthread/sysdeps/ia32/pt-machdep.h
index 6d456367..6d456367 100644
--- a/sysdeps/ia32/pt-machdep.h
+++ b/libpthread/sysdeps/ia32/pt-machdep.h
diff --git a/sysdeps/l4/bits/pthread-np.h b/libpthread/sysdeps/l4/bits/pthread-np.h
index 6a02bdc0..6a02bdc0 100644
--- a/sysdeps/l4/bits/pthread-np.h
+++ b/libpthread/sysdeps/l4/bits/pthread-np.h
diff --git a/sysdeps/l4/hurd/bits/pthread-np.h b/libpthread/sysdeps/l4/hurd/bits/pthread-np.h
index a90793df..a90793df 100644
--- a/sysdeps/l4/hurd/bits/pthread-np.h
+++ b/libpthread/sysdeps/l4/hurd/bits/pthread-np.h
diff --git a/sysdeps/l4/hurd/ia32/pt-machdep.c b/libpthread/sysdeps/l4/hurd/ia32/pt-machdep.c
index dbf5cd7e..dbf5cd7e 100644
--- a/sysdeps/l4/hurd/ia32/pt-machdep.c
+++ b/libpthread/sysdeps/l4/hurd/ia32/pt-machdep.c
diff --git a/sysdeps/l4/hurd/ia32/pt-setup.c b/libpthread/sysdeps/l4/hurd/ia32/pt-setup.c
index 579905c9..579905c9 100644
--- a/sysdeps/l4/hurd/ia32/pt-setup.c
+++ b/libpthread/sysdeps/l4/hurd/ia32/pt-setup.c
diff --git a/sysdeps/l4/hurd/ia32/signal-dispatch-lowlevel.c b/libpthread/sysdeps/l4/hurd/ia32/signal-dispatch-lowlevel.c
index 37ef8215..37ef8215 100644
--- a/sysdeps/l4/hurd/ia32/signal-dispatch-lowlevel.c
+++ b/libpthread/sysdeps/l4/hurd/ia32/signal-dispatch-lowlevel.c
diff --git a/sysdeps/l4/hurd/powerpc/pt-machdep.c b/libpthread/sysdeps/l4/hurd/powerpc/pt-machdep.c
index 754d203e..754d203e 100644
--- a/sysdeps/l4/hurd/powerpc/pt-machdep.c
+++ b/libpthread/sysdeps/l4/hurd/powerpc/pt-machdep.c
diff --git a/sysdeps/l4/hurd/powerpc/pt-setup.c b/libpthread/sysdeps/l4/hurd/powerpc/pt-setup.c
index d3cf4ec3..d3cf4ec3 100644
--- a/sysdeps/l4/hurd/powerpc/pt-setup.c
+++ b/libpthread/sysdeps/l4/hurd/powerpc/pt-setup.c
diff --git a/sysdeps/l4/hurd/pt-block.c b/libpthread/sysdeps/l4/hurd/pt-block.c
index 2315b1c4..2315b1c4 100644
--- a/sysdeps/l4/hurd/pt-block.c
+++ b/libpthread/sysdeps/l4/hurd/pt-block.c
diff --git a/sysdeps/l4/hurd/pt-kill.c b/libpthread/sysdeps/l4/hurd/pt-kill.c
index c72e82f4..c72e82f4 100644
--- a/sysdeps/l4/hurd/pt-kill.c
+++ b/libpthread/sysdeps/l4/hurd/pt-kill.c
diff --git a/sysdeps/l4/hurd/pt-setactivity-np.c b/libpthread/sysdeps/l4/hurd/pt-setactivity-np.c
index f2f07233..f2f07233 100644
--- a/sysdeps/l4/hurd/pt-setactivity-np.c
+++ b/libpthread/sysdeps/l4/hurd/pt-setactivity-np.c
diff --git a/sysdeps/l4/hurd/pt-sigstate-destroy.c b/libpthread/sysdeps/l4/hurd/pt-sigstate-destroy.c
index 997a0369..997a0369 100644
--- a/sysdeps/l4/hurd/pt-sigstate-destroy.c
+++ b/libpthread/sysdeps/l4/hurd/pt-sigstate-destroy.c
diff --git a/sysdeps/l4/hurd/pt-sigstate-init.c b/libpthread/sysdeps/l4/hurd/pt-sigstate-init.c
index 4c40fdb3..4c40fdb3 100644
--- a/sysdeps/l4/hurd/pt-sigstate-init.c
+++ b/libpthread/sysdeps/l4/hurd/pt-sigstate-init.c
diff --git a/sysdeps/l4/hurd/pt-sigstate.c b/libpthread/sysdeps/l4/hurd/pt-sigstate.c
index 66dd08cf..66dd08cf 100644
--- a/sysdeps/l4/hurd/pt-sigstate.c
+++ b/libpthread/sysdeps/l4/hurd/pt-sigstate.c
diff --git a/sysdeps/l4/hurd/pt-startup.c b/libpthread/sysdeps/l4/hurd/pt-startup.c
index b6461de7..b6461de7 100644
--- a/sysdeps/l4/hurd/pt-startup.c
+++ b/libpthread/sysdeps/l4/hurd/pt-startup.c
diff --git a/sysdeps/l4/hurd/pt-sysdep.c b/libpthread/sysdeps/l4/hurd/pt-sysdep.c
index c23364c7..c23364c7 100644
--- a/sysdeps/l4/hurd/pt-sysdep.c
+++ b/libpthread/sysdeps/l4/hurd/pt-sysdep.c
diff --git a/sysdeps/l4/hurd/pt-sysdep.h b/libpthread/sysdeps/l4/hurd/pt-sysdep.h
index 08bcd143..08bcd143 100644
--- a/sysdeps/l4/hurd/pt-sysdep.h
+++ b/libpthread/sysdeps/l4/hurd/pt-sysdep.h
diff --git a/sysdeps/l4/hurd/pt-thread-alloc.c b/libpthread/sysdeps/l4/hurd/pt-thread-alloc.c
index ada7b3b8..ada7b3b8 100644
--- a/sysdeps/l4/hurd/pt-thread-alloc.c
+++ b/libpthread/sysdeps/l4/hurd/pt-thread-alloc.c
diff --git a/sysdeps/l4/hurd/pt-thread-halt.c b/libpthread/sysdeps/l4/hurd/pt-thread-halt.c
index 98fefaab..98fefaab 100644
--- a/sysdeps/l4/hurd/pt-thread-halt.c
+++ b/libpthread/sysdeps/l4/hurd/pt-thread-halt.c
diff --git a/sysdeps/l4/hurd/pt-thread-start.c b/libpthread/sysdeps/l4/hurd/pt-thread-start.c
index 9db399ce..9db399ce 100644
--- a/sysdeps/l4/hurd/pt-thread-start.c
+++ b/libpthread/sysdeps/l4/hurd/pt-thread-start.c
diff --git a/sysdeps/l4/hurd/pt-wakeup.c b/libpthread/sysdeps/l4/hurd/pt-wakeup.c
index e568a6f9..e568a6f9 100644
--- a/sysdeps/l4/hurd/pt-wakeup.c
+++ b/libpthread/sysdeps/l4/hurd/pt-wakeup.c
diff --git a/sysdeps/l4/hurd/sig-sysdep.h b/libpthread/sysdeps/l4/hurd/sig-sysdep.h
index 33e13857..33e13857 100644
--- a/sysdeps/l4/hurd/sig-sysdep.h
+++ b/libpthread/sysdeps/l4/hurd/sig-sysdep.h
diff --git a/sysdeps/l4/hurd/sigprocmask.c b/libpthread/sysdeps/l4/hurd/sigprocmask.c
index a38b3795..a38b3795 100644
--- a/sysdeps/l4/hurd/sigprocmask.c
+++ b/libpthread/sysdeps/l4/hurd/sigprocmask.c
diff --git a/sysdeps/l4/pt-block.c b/libpthread/sysdeps/l4/pt-block.c
index 69e1d358..69e1d358 100644
--- a/sysdeps/l4/pt-block.c
+++ b/libpthread/sysdeps/l4/pt-block.c
diff --git a/sysdeps/l4/pt-docancel.c b/libpthread/sysdeps/l4/pt-docancel.c
index a3965d0d..a3965d0d 100644
--- a/sysdeps/l4/pt-docancel.c
+++ b/libpthread/sysdeps/l4/pt-docancel.c
diff --git a/sysdeps/l4/pt-pool-np.c b/libpthread/sysdeps/l4/pt-pool-np.c
index e83022ba..e83022ba 100644
--- a/sysdeps/l4/pt-pool-np.c
+++ b/libpthread/sysdeps/l4/pt-pool-np.c
diff --git a/sysdeps/l4/pt-spin.c b/libpthread/sysdeps/l4/pt-spin.c
index b6978b0c..b6978b0c 100644
--- a/sysdeps/l4/pt-spin.c
+++ b/libpthread/sysdeps/l4/pt-spin.c
diff --git a/sysdeps/l4/pt-stack-alloc.c b/libpthread/sysdeps/l4/pt-stack-alloc.c
index b7ec12b4..b7ec12b4 100644
--- a/sysdeps/l4/pt-stack-alloc.c
+++ b/libpthread/sysdeps/l4/pt-stack-alloc.c
diff --git a/sysdeps/l4/pt-thread-alloc.c b/libpthread/sysdeps/l4/pt-thread-alloc.c
index ec69afb5..ec69afb5 100644
--- a/sysdeps/l4/pt-thread-alloc.c
+++ b/libpthread/sysdeps/l4/pt-thread-alloc.c
diff --git a/sysdeps/l4/pt-thread-dealloc.c b/libpthread/sysdeps/l4/pt-thread-dealloc.c
index c09e4860..c09e4860 100644
--- a/sysdeps/l4/pt-thread-dealloc.c
+++ b/libpthread/sysdeps/l4/pt-thread-dealloc.c
diff --git a/sysdeps/l4/pt-thread-halt.c b/libpthread/sysdeps/l4/pt-thread-halt.c
index aa2bf43d..aa2bf43d 100644
--- a/sysdeps/l4/pt-thread-halt.c
+++ b/libpthread/sysdeps/l4/pt-thread-halt.c
diff --git a/sysdeps/l4/pt-thread-start.c b/libpthread/sysdeps/l4/pt-thread-start.c
index 144c58bb..144c58bb 100644
--- a/sysdeps/l4/pt-thread-start.c
+++ b/libpthread/sysdeps/l4/pt-thread-start.c
diff --git a/sysdeps/l4/pt-timedblock.c b/libpthread/sysdeps/l4/pt-timedblock.c
index ce7972bd..ce7972bd 100644
--- a/sysdeps/l4/pt-timedblock.c
+++ b/libpthread/sysdeps/l4/pt-timedblock.c
diff --git a/sysdeps/l4/pt-wakeup.c b/libpthread/sysdeps/l4/pt-wakeup.c
index de378465..de378465 100644
--- a/sysdeps/l4/pt-wakeup.c
+++ b/libpthread/sysdeps/l4/pt-wakeup.c
diff --git a/sysdeps/mach/bits/spin-lock-inline.h b/libpthread/sysdeps/mach/bits/spin-lock-inline.h
index f9f7c299..f9f7c299 100644
--- a/sysdeps/mach/bits/spin-lock-inline.h
+++ b/libpthread/sysdeps/mach/bits/spin-lock-inline.h
diff --git a/sysdeps/mach/bits/spin-lock.h b/libpthread/sysdeps/mach/bits/spin-lock.h
index 537dac9d..537dac9d 100644
--- a/sysdeps/mach/bits/spin-lock.h
+++ b/libpthread/sysdeps/mach/bits/spin-lock.h
diff --git a/sysdeps/mach/hurd/ia32/pt-machdep.c b/libpthread/sysdeps/mach/hurd/ia32/pt-machdep.c
index face46c5..face46c5 100644
--- a/sysdeps/mach/hurd/ia32/pt-machdep.c
+++ b/libpthread/sysdeps/mach/hurd/ia32/pt-machdep.c
diff --git a/sysdeps/mach/hurd/ia32/pt-setup.c b/libpthread/sysdeps/mach/hurd/ia32/pt-setup.c
index ba438d6a..ba438d6a 100644
--- a/sysdeps/mach/hurd/ia32/pt-setup.c
+++ b/libpthread/sysdeps/mach/hurd/ia32/pt-setup.c
diff --git a/sysdeps/mach/hurd/pt-attr-setstackaddr.c b/libpthread/sysdeps/mach/hurd/pt-attr-setstackaddr.c
index 1225ed5b..1225ed5b 100644
--- a/sysdeps/mach/hurd/pt-attr-setstackaddr.c
+++ b/libpthread/sysdeps/mach/hurd/pt-attr-setstackaddr.c
diff --git a/sysdeps/mach/hurd/pt-attr-setstacksize.c b/libpthread/sysdeps/mach/hurd/pt-attr-setstacksize.c
index 6471c0a3..6471c0a3 100644
--- a/sysdeps/mach/hurd/pt-attr-setstacksize.c
+++ b/libpthread/sysdeps/mach/hurd/pt-attr-setstacksize.c
diff --git a/sysdeps/mach/hurd/pt-docancel.c b/libpthread/sysdeps/mach/hurd/pt-docancel.c
index b81a5c70..b81a5c70 100644
--- a/sysdeps/mach/hurd/pt-docancel.c
+++ b/libpthread/sysdeps/mach/hurd/pt-docancel.c
diff --git a/sysdeps/mach/hurd/pt-sigstate-destroy.c b/libpthread/sysdeps/mach/hurd/pt-sigstate-destroy.c
index 8e56c5cf..8e56c5cf 100644
--- a/sysdeps/mach/hurd/pt-sigstate-destroy.c
+++ b/libpthread/sysdeps/mach/hurd/pt-sigstate-destroy.c
diff --git a/sysdeps/mach/hurd/pt-sigstate-init.c b/libpthread/sysdeps/mach/hurd/pt-sigstate-init.c
index da5a9455..da5a9455 100644
--- a/sysdeps/mach/hurd/pt-sigstate-init.c
+++ b/libpthread/sysdeps/mach/hurd/pt-sigstate-init.c
diff --git a/sysdeps/mach/hurd/pt-sigstate.c b/libpthread/sysdeps/mach/hurd/pt-sigstate.c
index 68c79c5b..68c79c5b 100644
--- a/sysdeps/mach/hurd/pt-sigstate.c
+++ b/libpthread/sysdeps/mach/hurd/pt-sigstate.c
diff --git a/sysdeps/mach/hurd/pt-sysdep.c b/libpthread/sysdeps/mach/hurd/pt-sysdep.c
index 5e070067..5e070067 100644
--- a/sysdeps/mach/hurd/pt-sysdep.c
+++ b/libpthread/sysdeps/mach/hurd/pt-sysdep.c
diff --git a/sysdeps/mach/hurd/pt-sysdep.h b/libpthread/sysdeps/mach/hurd/pt-sysdep.h
index f14a1366..f14a1366 100644
--- a/sysdeps/mach/hurd/pt-sysdep.h
+++ b/libpthread/sysdeps/mach/hurd/pt-sysdep.h
diff --git a/sysdeps/mach/pt-block.c b/libpthread/sysdeps/mach/pt-block.c
index a947b27c..a947b27c 100644
--- a/sysdeps/mach/pt-block.c
+++ b/libpthread/sysdeps/mach/pt-block.c
diff --git a/sysdeps/mach/pt-spin.c b/libpthread/sysdeps/mach/pt-spin.c
index d9a2a32a..d9a2a32a 100644
--- a/sysdeps/mach/pt-spin.c
+++ b/libpthread/sysdeps/mach/pt-spin.c
diff --git a/sysdeps/mach/pt-stack-alloc.c b/libpthread/sysdeps/mach/pt-stack-alloc.c
index 0956fc7d..0956fc7d 100644
--- a/sysdeps/mach/pt-stack-alloc.c
+++ b/libpthread/sysdeps/mach/pt-stack-alloc.c
diff --git a/sysdeps/mach/pt-thread-alloc.c b/libpthread/sysdeps/mach/pt-thread-alloc.c
index 3d7c0465..3d7c0465 100644
--- a/sysdeps/mach/pt-thread-alloc.c
+++ b/libpthread/sysdeps/mach/pt-thread-alloc.c
diff --git a/sysdeps/mach/pt-thread-dealloc.c b/libpthread/sysdeps/mach/pt-thread-dealloc.c
index 55d8c4d5..55d8c4d5 100644
--- a/sysdeps/mach/pt-thread-dealloc.c
+++ b/libpthread/sysdeps/mach/pt-thread-dealloc.c
diff --git a/sysdeps/mach/pt-thread-halt.c b/libpthread/sysdeps/mach/pt-thread-halt.c
index 973cde1e..973cde1e 100644
--- a/sysdeps/mach/pt-thread-halt.c
+++ b/libpthread/sysdeps/mach/pt-thread-halt.c
diff --git a/sysdeps/mach/pt-thread-start.c b/libpthread/sysdeps/mach/pt-thread-start.c
index 11b017ff..11b017ff 100644
--- a/sysdeps/mach/pt-thread-start.c
+++ b/libpthread/sysdeps/mach/pt-thread-start.c
diff --git a/sysdeps/mach/pt-timedblock.c b/libpthread/sysdeps/mach/pt-timedblock.c
index 6f547265..6f547265 100644
--- a/sysdeps/mach/pt-timedblock.c
+++ b/libpthread/sysdeps/mach/pt-timedblock.c
diff --git a/sysdeps/mach/pt-wakeup.c b/libpthread/sysdeps/mach/pt-wakeup.c
index 4920d102..4920d102 100644
--- a/sysdeps/mach/pt-wakeup.c
+++ b/libpthread/sysdeps/mach/pt-wakeup.c
diff --git a/sysdeps/posix/pt-spin.c b/libpthread/sysdeps/posix/pt-spin.c
index cb809c64..cb809c64 100644
--- a/sysdeps/posix/pt-spin.c
+++ b/libpthread/sysdeps/posix/pt-spin.c
diff --git a/sysdeps/powerpc/bits/machine-lock.h b/libpthread/sysdeps/powerpc/bits/machine-lock.h
index cba6b0a6..cba6b0a6 100644
--- a/sysdeps/powerpc/bits/machine-lock.h
+++ b/libpthread/sysdeps/powerpc/bits/machine-lock.h
diff --git a/sysdeps/powerpc/bits/memory.h b/libpthread/sysdeps/powerpc/bits/memory.h
index 96624c3e..96624c3e 100644
--- a/sysdeps/powerpc/bits/memory.h
+++ b/libpthread/sysdeps/powerpc/bits/memory.h
diff --git a/sysdeps/powerpc/bits/spin-lock.h b/libpthread/sysdeps/powerpc/bits/spin-lock.h
index 1dc25710..1dc25710 100644
--- a/sysdeps/powerpc/bits/spin-lock.h
+++ b/libpthread/sysdeps/powerpc/bits/spin-lock.h
diff --git a/sysdeps/powerpc/machine-sp.h b/libpthread/sysdeps/powerpc/machine-sp.h
index aa787c59..aa787c59 100644
--- a/sysdeps/powerpc/machine-sp.h
+++ b/libpthread/sysdeps/powerpc/machine-sp.h
diff --git a/sysdeps/powerpc/pt-machdep.h b/libpthread/sysdeps/powerpc/pt-machdep.h
index 6d456367..6d456367 100644
--- a/sysdeps/powerpc/pt-machdep.h
+++ b/libpthread/sysdeps/powerpc/pt-machdep.h
diff --git a/tests/.cvsignore b/libpthread/tests/.cvsignore
index 70845e08..70845e08 100644
--- a/tests/.cvsignore
+++ b/libpthread/tests/.cvsignore
diff --git a/tests/Makefile b/libpthread/tests/Makefile
index 9509c957..9509c957 100644
--- a/tests/Makefile
+++ b/libpthread/tests/Makefile
diff --git a/tests/test-1.c b/libpthread/tests/test-1.c
index 318fd6e9..318fd6e9 100644
--- a/tests/test-1.c
+++ b/libpthread/tests/test-1.c
diff --git a/tests/test-10.c b/libpthread/tests/test-10.c
index bec05c14..bec05c14 100644
--- a/tests/test-10.c
+++ b/libpthread/tests/test-10.c
diff --git a/tests/test-11.c b/libpthread/tests/test-11.c
index de779a40..de779a40 100644
--- a/tests/test-11.c
+++ b/libpthread/tests/test-11.c
diff --git a/tests/test-12.c b/libpthread/tests/test-12.c
index 2b784908..2b784908 100644
--- a/tests/test-12.c
+++ b/libpthread/tests/test-12.c
diff --git a/tests/test-13.c b/libpthread/tests/test-13.c
index 13b09051..13b09051 100644
--- a/tests/test-13.c
+++ b/libpthread/tests/test-13.c
diff --git a/tests/test-14.c b/libpthread/tests/test-14.c
index b1dbfa66..b1dbfa66 100644
--- a/tests/test-14.c
+++ b/libpthread/tests/test-14.c
diff --git a/tests/test-15.c b/libpthread/tests/test-15.c
index 173f8b6b..173f8b6b 100644
--- a/tests/test-15.c
+++ b/libpthread/tests/test-15.c
diff --git a/tests/test-16.c b/libpthread/tests/test-16.c
index b6a52d01..b6a52d01 100644
--- a/tests/test-16.c
+++ b/libpthread/tests/test-16.c
diff --git a/tests/test-2.c b/libpthread/tests/test-2.c
index 701462e8..701462e8 100644
--- a/tests/test-2.c
+++ b/libpthread/tests/test-2.c
diff --git a/tests/test-3.c b/libpthread/tests/test-3.c
index 7db2e43f..7db2e43f 100644
--- a/tests/test-3.c
+++ b/libpthread/tests/test-3.c
diff --git a/tests/test-4.c b/libpthread/tests/test-4.c
index de9c8fe4..de9c8fe4 100644
--- a/tests/test-4.c
+++ b/libpthread/tests/test-4.c
diff --git a/tests/test-5.c b/libpthread/tests/test-5.c
index 0f5000b2..0f5000b2 100644
--- a/tests/test-5.c
+++ b/libpthread/tests/test-5.c
diff --git a/tests/test-6.c b/libpthread/tests/test-6.c
index 98aa8ba7..98aa8ba7 100644
--- a/tests/test-6.c
+++ b/libpthread/tests/test-6.c
diff --git a/tests/test-7.c b/libpthread/tests/test-7.c
index bd97acfa..bd97acfa 100644
--- a/tests/test-7.c
+++ b/libpthread/tests/test-7.c
diff --git a/tests/test-8.c b/libpthread/tests/test-8.c
index 85a7f8f6..85a7f8f6 100644
--- a/tests/test-8.c
+++ b/libpthread/tests/test-8.c
diff --git a/tests/test-9.c b/libpthread/tests/test-9.c
index 82051570..82051570 100644
--- a/tests/test-9.c
+++ b/libpthread/tests/test-9.c