summaryrefslogtreecommitdiff
path: root/nptl
diff options
context:
space:
mode:
Diffstat (limited to 'nptl')
-rw-r--r--nptl/ChangeLog253
-rw-r--r--nptl/Makefile10
-rw-r--r--nptl/allocatestack.c59
-rw-r--r--nptl/descr.h3
-rw-r--r--nptl/init.c6
-rw-r--r--nptl/pthreadP.h4
-rw-r--r--nptl/pthread_attr_setstack.c15
-rw-r--r--nptl/pthread_attr_setstacksize.c14
-rw-r--r--nptl/pthread_barrier_wait.c (renamed from nptl/sysdeps/pthread/pthread_barrier_wait.c)0
-rw-r--r--nptl/pthread_cond_broadcast.c (renamed from nptl/sysdeps/pthread/pthread_cond_broadcast.c)0
-rw-r--r--nptl/pthread_cond_signal.c (renamed from nptl/sysdeps/pthread/pthread_cond_signal.c)0
-rw-r--r--nptl/pthread_cond_timedwait.c (renamed from nptl/sysdeps/pthread/pthread_cond_timedwait.c)0
-rw-r--r--nptl/pthread_cond_wait.c (renamed from nptl/sysdeps/pthread/pthread_cond_wait.c)0
-rw-r--r--nptl/pthread_getattr_np.c10
-rw-r--r--nptl/pthread_getcpuclockid.c (renamed from nptl/sysdeps/pthread/pthread_getcpuclockid.c)0
-rw-r--r--nptl/pthread_mutex_lock.c4
-rw-r--r--nptl/pthread_mutex_timedlock.c8
-rw-r--r--nptl/pthread_mutex_trylock.c8
-rw-r--r--nptl/pthread_once.c (renamed from nptl/sysdeps/pthread/pthread_once.c)0
-rw-r--r--nptl/pthread_rwlock_rdlock.c (renamed from nptl/sysdeps/pthread/pthread_rwlock_rdlock.c)0
-rw-r--r--nptl/pthread_rwlock_timedrdlock.c (renamed from nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c)0
-rw-r--r--nptl/pthread_rwlock_timedwrlock.c (renamed from nptl/sysdeps/pthread/pthread_rwlock_timedwrlock.c)0
-rw-r--r--nptl/pthread_rwlock_unlock.c (renamed from nptl/sysdeps/pthread/pthread_rwlock_unlock.c)0
-rw-r--r--nptl/pthread_rwlock_wrlock.c (renamed from nptl/sysdeps/pthread/pthread_rwlock_wrlock.c)0
-rw-r--r--nptl/pthread_spin_destroy.c (renamed from nptl/sysdeps/pthread/pthread_spin_destroy.c)0
-rw-r--r--nptl/pthread_spin_init.c (renamed from nptl/sysdeps/pthread/pthread_spin_init.c)0
-rw-r--r--nptl/pthread_spin_unlock.c (renamed from nptl/sysdeps/pthread/pthread_spin_unlock.c)0
-rw-r--r--nptl/sysdeps/alpha/tls.h28
-rw-r--r--nptl/sysdeps/i386/tls.h26
-rw-r--r--nptl/sysdeps/ia64/pthread_spin_unlock.c4
-rw-r--r--nptl/sysdeps/ia64/tls.h28
-rw-r--r--nptl/sysdeps/powerpc/tls.h28
-rw-r--r--nptl/sysdeps/s390/tls.h29
-rw-r--r--nptl/sysdeps/sh/tls.h28
-rw-r--r--nptl/sysdeps/sparc/tls.h34
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/bits/semaphore.h3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/bits/local_lim.h3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/fork.c9
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/bits/semaphore.h3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S11
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h10
-rw-r--r--nptl/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/ia64/bits/semaphore.h3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c22
-rw-r--r--nptl/sysdeps/unix/sysv/linux/powerpc/Versions4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h93
-rw-r--r--nptl/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstack.c2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstacksize.c8
-rw-r--r--nptl/sysdeps/unix/sysv/linux/rtld-lowlevel.h2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/s390/bits/semaphore.h3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h21
-rw-r--r--nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h21
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/bits/semaphore.h3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/bits/semaphore.h3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_wait.c2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h28
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S10
-rw-r--r--nptl/sysdeps/x86_64/tls.h26
-rw-r--r--nptl/tst-cancel-wrappers.sh3
-rw-r--r--nptl/tst-cancel4.c44
-rw-r--r--nptl/tst-robust9.c94
-rw-r--r--nptl/tst-robustpi9.c2
-rw-r--r--nptl/tst-sem10.c88
-rw-r--r--nptl/tst-tls5.h2
69 files changed, 373 insertions, 768 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 47ea82ff5d..0b1d6300ac 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,107 +1,41 @@
-2007-07-27 Jakub Jelinek <jakub@redhat.com>
+2007-01-10 Ulrich Drepper <drepper@redhat.com>
- * sysdeps/sparc/tls.h (tcbhead_t): Move gscope_flag to the end
- of the structure for sparc32.
+ * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Cleanups. Define
+ FUTEX_CMP_REQUEUE and lll_futex_requeue.
-2007-07-26 Aurelien Jarno <aurelien@aurel32.net>
-
- * sysdeps/sparc/tls.h (tcbhead_t): Add gscope_flag.
-
-2007-06-22 Jakub Jelinek <jakub@redhat.com>
-
- * pthread_getattr_np.c (pthread_getattr_np): Clear cpuset and
- cpusetsize if pthread_getaffinity_np failed with ENOSYS.
-
-2007-05-28 Jakub Jelinek <jakub@redhat.com>
+2006-12-28 David S. Miller <davem@davemloft.net>
- * sysdeps/i386/tls.h (THREAD_GSCOPE_RESET_FLAG): Use explicit
- insn suffix.
- (THREAD_GSCOPE_GET_FLAG): Remove.
- * sysdeps/x86_64/tls.h (THREAD_GSCOPE_GET_FLAG): Remove.
- * allocatestack.c (__wait_lookup_done): Revert 2007-05-24
- changes.
- * sysdeps/powerpc/tls.h (tcbhead_t): Remove gscope_flag.
- (THREAD_GSCOPE_GET_FLAG): Remove.
- (THREAD_GSCOPE_RESET_FLAG): Use THREAD_SELF->header.gscope_flag
- instead of THREAD_GSCOPE_GET_FLAG.
- (THREAD_GSCOPE_SET_FLAG): Likewise. Add atomic_write_barrier after
- it.
- * sysdeps/s390/tls.h (THREAD_GSCOPE_FLAG_UNUSED,
- THREAD_GSCOPE_FLAG_USED, THREAD_GSCOPE_FLAG_WAIT,
- THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_SET_FLAG,
- THREAD_GSCOPE_WAIT): Define.
- * sysdeps/sparc/tls.h (THREAD_GSCOPE_FLAG_UNUSED,
- THREAD_GSCOPE_FLAG_USED, THREAD_GSCOPE_FLAG_WAIT,
- THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_SET_FLAG,
- THREAD_GSCOPE_WAIT): Define.
- * sysdeps/sh/tls.h (THREAD_GSCOPE_FLAG_UNUSED,
- THREAD_GSCOPE_FLAG_USED, THREAD_GSCOPE_FLAG_WAIT,
- THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_SET_FLAG,
- THREAD_GSCOPE_WAIT): Define.
- * sysdeps/ia64/tls.h (THREAD_GSCOPE_FLAG_UNUSED,
- THREAD_GSCOPE_FLAG_USED, THREAD_GSCOPE_FLAG_WAIT,
- THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_SET_FLAG,
- THREAD_GSCOPE_WAIT): Define.
-
-2007-05-24 Richard Henderson <rth@redhat.com>
-
- * descr.h (struct pthread): Add header.gscope_flag.
- * sysdeps/alpha/tls.h (THREAD_GSCOPE_FLAG_UNUSED,
- THREAD_GSCOPE_FLAG_USED, THREAD_GSCOPE_FLAG_WAIT,
- THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_SET_FLAG,
- THREAD_GSCOPE_WAIT): Define.
-
-2007-05-26 Ulrich Drepper <drepper@redhat.com>
-
- * allocatestack.c: Revert last change.
- * init.c: Likewise.
- * sysdeps/i386/tls.h: Likewise.
- * sysdeps/x86_64/tls.h: Likewise.
+ * shlib-versions: Fix sparc64 linux target specification.
-2007-05-24 Jakub Jelinek <jakub@redhat.com>
+2007-01-10 Jakub Jelinek <jakub@redhat.com>
- * sysdeps/powerpc/tls.h (tcbhead_t): Add gscope_flag.
- (THREAD_GSCOPE_FLAG_UNUSED, THREAD_GSCOPE_FLAG_USED,
- THREAD_GSCOPE_FLAG_WAIT): Define.
- (THREAD_GSCOPE_GET_FLAG, THREAD_GSCOPE_SET_FLAG,
- THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_WAIT): Define.
- * sysdeps/i386/tls.h (THREAD_GSCOPE_WAIT): Don't use
- PTR_DEMANGLE.
- (THREAD_GSCOPE_GET_FLAG): Define.
- * sysdeps/x86_64/tls.h (THREAD_GSCOPE_GET_FLAG): Define.
- * allocatestack.c (__wait_lookup_done): Use THREAD_GSCOPE_GET_FLAG
- instead of ->header.gscope_flag directly.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_wait.c:
+ Adjust include path for pthread_barrier_wait.c move.
-2007-05-21 Ulrich Drepper <drepper@redhat.com>
+2006-12-21 Jakub Jelinek <jakub@redhat.com>
- * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
- Remove ptr_wait_lookup_done again.
- * init.c (pthread_functions): Don't add .ptr_wait_lookup_done here.
- (__pthread_initialize_minimal_internal): Initialize
- _dl_wait_lookup_done pointer in _rtld_global directly.
- * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
- Remove code to code _dl_wait_lookup_done.
- * sysdeps/x86_64/tls.h (THREAD_GSCOPE_WAIT): The pointer is not
- encrypted for now.
+ * sysdeps/unix/sysv/linux/pthread_kill.c (pthread_kill): Make sure
+ tid isn't reread from pd->tid in between ESRCH test and the syscall.
-2007-05-19 Ulrich Drepper <drepper@redhat.com>
+2006-12-06 Jakub Jelinek <jakub@redhat.com>
- * allocatestack.c (__wait_lookup_done): New function.
- * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
- Add ptr_wait_lookup_done.
- * init.c (pthread_functions): Initialize .ptr_wait_lookup_done.
- * pthreadP.h: Declare __wait_lookup_done.
- * sysdeps/i386/tls.h (tcbhead_t): Add gscope_flag.
- Define macros to implement reference handling of global scope.
- * sysdeps/x86_64/tls.h: Likewise.
- * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
- Initialize GL(dl_wait_lookup_done).
+ * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h (PSEUDO): Handle
+ 6 argument cancellable syscalls.
+ (STM_6, LM_6, LR7_0, LR7_1, LR7_2, LR7_3, LR7_4, LR7_5, LR7_6): Define.
+ * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (PSEUDO): Handle
+ 6 argument cancellable syscalls.
+ (STM_6, LM_6, LR7_0, LR7_1, LR7_2, LR7_3, LR7_4, LR7_5, LR7_6): Define.
2006-12-09 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/rtld-lowlevel.h
(__rtld_mrlock_initialize): Add missing closing parenthesis.
+2006-10-30 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/ia64/pthread_spin_unlock.c (pthread_spin_unlock): Use
+ __sync_lock_release instead of __sync_lock_release_si.
+
2006-10-29 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (RTLD_SINGLE_THREAD_P):
@@ -118,6 +52,50 @@
* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
* sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise.
+2006-10-27 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/pthread/pthread_barrier_wait.c: Move to...
+ * pthread_barrier_wait.c: ...here.
+ * sysdeps/pthread/pthread_cond_broadcast.c: Move to...
+ * pthread_cond_broadcast.c: ...here.
+ * sysdeps/pthread/pthread_cond_signal.c: Move to...
+ * pthread_cond_signal.c: ...here.
+ * sysdeps/pthread/pthread_cond_timedwait.c: Move to...
+ * pthread_cond_timedwait.c: ...here.
+ * sysdeps/pthread/pthread_cond_wait.c: Move to...
+ * pthread_cond_wait.c: ...here.
+ * sysdeps/pthread/pthread_once.c: Move to...
+ * pthread_once.c: ...here.
+ * sysdeps/pthread/pthread_rwlock_rdlock.c: Move to...
+ * pthread_rwlock_rdlock.c: ...here.
+ * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Move to...
+ * pthread_rwlock_timedrdlock.c: ...here.
+ * sysdeps/pthread/pthread_rwlock_timedwrlock.c: Move to...
+ * pthread_rwlock_timedwrlock.c: ...here.
+ * sysdeps/pthread/pthread_rwlock_unlock.c: Move to...
+ * pthread_rwlock_unlock.c: ...here.
+ * sysdeps/pthread/pthread_rwlock_wrlock.c: Move to...
+ * pthread_rwlock_wrlock.c: ...here.
+ * sysdeps/pthread/pthread_spin_destroy.c: Move to...
+ * pthread_spin_destroy.c: ...here.
+ * sysdeps/pthread/pthread_spin_init.c: Move to...
+ * pthread_spin_init.c: ...here.
+ * sysdeps/pthread/pthread_spin_unlock.c: Move to...
+ * pthread_spin_unlock.c: ...here.
+ * sysdeps/pthread/pthread_getcpuclockid.c: Move to...
+ * pthread_getcpuclockid.c: ...here.
+
+ * init.c: USE_TLS support is now always enabled.
+ * tst-tls5.h: Likewise.
+ * sysdeps/alpha/tls.h: Likewise.
+ * sysdeps/i386/tls.h: Likewise.
+ * sysdeps/ia64/tls.h: Likewise.
+ * sysdeps/powerpc/tls.h: Likewise.
+ * sysdeps/s390/tls.h: Likewise.
+ * sysdeps/sh/tls.h: Likewise.
+ * sysdeps/sparc/tls.h: Likewise.
+ * sysdeps/x86_64/tls.h: Likewise.
+
2006-10-27 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/rtld-lowlevel.h (__rtld_mrlock_lock,
@@ -147,74 +125,59 @@
* sysdeps/unix/sysv/linux/sh/sysdep-cancel.h (SINGLE_THREAD_P):
Likewise.
-2006-10-09 Ulrich Drepper <drepper@redhat.com>
+2006-10-26 Jakub Jelinek <jakub@redhat.com>
- * sysdeps/unix/sysv/linux/rtld-lowlevel.h: New file..
-
-2007-05-25 Ulrich Drepper <drepper@redhat.com>
+ * pthread_attr_setstacksize.c (NEW_VERNUM): Define to GLIBC_2_3_3
+ by default rather than 2_3_3.
- * Makefile (tests): Add tst-sem10.
- * tst-sem10.c: New file.
-
-2007-05-25 Ulrich Drepper <drepper@redhat.com>
- Jakub Jelinek <jakub@redhat.com>
+2006-10-17 Jakub Jelinek <jakub@redhat.com>
- * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
- Move __pthread_enable_asynccancel right before futex syscall.
- * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
- Likewise.
-
-2007-05-21 Jakub Jelinek <jakub@redhat.com>
-
- * tst-robust9.c (do_test): Don't fail if ENABLE_PI and
- pthread_mutex_init failed with ENOTSUP.
-
-2007-05-17 Ulrich Drepper <drepper@redhat.com>
-
- [BZ #4512]
- * pthread_mutex_lock.c: Preserve FUTEX_WAITERS bit when dead owner
- is detected.
- * pthread_mutex_timedlock.c: Likewise.
- * pthread_mutex_trylock.c: Likewise.
- Patch in part by Atsushi Nemoto <anemo@mba.ocn.ne.jp>.
-
- * Makefile (tests): Add tst-robust9 and tst-robustpi9.
- * tst-robust9.c: New file.
- * tst-robustpi9.c: New file.
-
-2007-05-07 Ulrich Drepper <drepper@redhat.com>
-
- * sysdeps/unix/sysv/linux/lowlevelrobustlock.c
- (__lll_robust_lock_wait): Fix race caused by reloading of futex value.
- (__lll_robust_timedlock_wait): Likewise.
- Reported by Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>.
-
-2007-05-06 Mike Frysinger <vapier@gentoo.org>
+ * sysdeps/unix/sysv/linux/rtld-lowlevel.h (__rtld_mrlock_lock,
+ __rtld_mrlock_unlock, __rtld_mrlock_change, __rtld_mrlock_done): Use
+ atomic_* instead of catomic_* macros.
- [BZ #4465]
- * tst-cancel-wrappers.sh: Set C["fdatasync"] to 1.
- * tst-cancel4.c (tf_fdatasync): New test.
+2006-10-12 Ulrich Drepper <drepper@redhat.com>
-2007-02-25 Ulrich Drepper <drepper@redhat.com>
+ [BZ #3285]
+ * sysdeps/unix/sysv/linux/bits/local_lim.h: Add SEM_VALUE_MAX.
+ * sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: Likewise.
+ * sysdeps/unix/sysv/linux/i386/bits/semaphore.h: Remove SEM_VALUE_MAX.
+ * sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/semaphore.h: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/bits/semaphore.h: Likewise.
+ * sysdeps/unix/sysv/linux/sh/bits/semaphore.h: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/bits/semaphore.h: Likewise.
+ * sysdeps/unix/sysv/linux/s390/bits/semaphore.h: Likewise.
- * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Reset refcntr in
- new thread, don't just decrement it.
- Patch by Suzuki K P <suzuki@in.ibm.com>.
+2006-10-11 Ulrich Drepper <drepper@redhat.com>
-2007-02-09 Jakub Jelinek <jakub@redhat.com>
+ * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Add support for
+ cancelable syscalls with six parameters.
- * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
- (__lll_mutex_timedlock_wait): Use correct pointer when we don't
- call into the kernel to delay.
+ * sysdeps/unix/sysv/linux/rtld-lowlevel.h: Use catomic_*
+ operations instead of atomic_*.
-2006-12-28 David S. Miller <davem@davemloft.net>
+2006-10-09 Ulrich Drepper <drepper@redhat.com>
- * shlib-versions: Fix sparc64 linux target specification.
+ * sysdeps/unix/sysv/linux/rtld-lowlevel.h: New file..
-2006-12-21 Jakub Jelinek <jakub@redhat.com>
+2006-10-07 Ulrich Drepper <drepper@redhat.com>
- * sysdeps/unix/sysv/linux/pthread_kill.c (pthread_kill): Make sure
- tid isn't reread from pd->tid in between ESRCH test and the syscall.
+ * sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h: New file.
+ * sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstack.c: New file.
+ * sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstacksize.c:
+ New file.
+ * pthread_attr_setstack.c: Allow overwriting the version number of the
+ new symbol.
+ * pthread_attr_setstacksize.c: Likewise.
+ (__old_pthread_attr_setstacksize): If STACKSIZE_ADJUST is defined use
+ it.
+ * sysdeps/unix/sysv/linux/powerpc/Versions (libpthread): Add
+ pthread_attr_setstack and pthread_attr_setstacksize to GLIBC_2.6.
2006-09-24 Ulrich Drepper <drepper@redhat.com>
diff --git a/nptl/Makefile b/nptl/Makefile
index 61cd25756c..9393cab009 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+# Copyright (C) 2002,2003,2004,2005,2006 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
@@ -209,16 +209,16 @@ tests = tst-typesizes \
tst-cond14 tst-cond15 tst-cond16 tst-cond17 tst-cond18 tst-cond19 \
tst-cond20 tst-cond21 tst-cond22 \
tst-robust1 tst-robust2 tst-robust3 tst-robust4 tst-robust5 \
- tst-robust6 tst-robust7 tst-robust8 tst-robust9 \
- tst-robustpi1 tst-robustpi2 tst-robustpi3 tst-robustpi4 tst-robustpi5 \
- tst-robustpi6 tst-robustpi7 tst-robustpi8 tst-robustpi9 \
+ tst-robust6 tst-robust7 tst-robust8 \
+ tst-robustpi1 tst-robustpi2 tst-robustpi3 tst-robustpi4 \
+ tst-robustpi5 tst-robustpi6 tst-robustpi7 tst-robustpi8 \
tst-rwlock1 tst-rwlock2 tst-rwlock3 tst-rwlock4 tst-rwlock5 \
tst-rwlock6 tst-rwlock7 tst-rwlock8 tst-rwlock9 tst-rwlock10 \
tst-rwlock11 tst-rwlock12 tst-rwlock13 tst-rwlock14 \
tst-once1 tst-once2 tst-once3 tst-once4 \
tst-key1 tst-key2 tst-key3 tst-key4 \
tst-sem1 tst-sem2 tst-sem3 tst-sem4 tst-sem5 tst-sem6 tst-sem7 \
- tst-sem8 tst-sem9 tst-sem10 \
+ tst-sem8 tst-sem9 \
tst-barrier1 tst-barrier2 tst-barrier3 tst-barrier4 \
tst-align tst-align2 tst-align3 \
tst-basic1 tst-basic2 tst-basic3 tst-basic4 tst-basic5 tst-basic6 \
diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
index 736c63d69f..c05cd47dff 100644
--- a/nptl/allocatestack.c
+++ b/nptl/allocatestack.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -982,60 +982,3 @@ __pthread_init_static_tls (struct link_map *map)
lll_unlock (stack_cache_lock);
}
-
-
-void
-attribute_hidden
-__wait_lookup_done (void)
-{
- lll_lock (stack_cache_lock);
-
- struct pthread *self = THREAD_SELF;
-
- /* Iterate over the list with system-allocated threads first. */
- list_t *runp;
- list_for_each (runp, &stack_used)
- {
- struct pthread *t = list_entry (runp, struct pthread, list);
- if (t == self || t->header.gscope_flag == THREAD_GSCOPE_FLAG_UNUSED)
- continue;
-
- int *const gscope_flagp = &t->header.gscope_flag;
-
- /* We have to wait until this thread is done with the global
- scope. First tell the thread that we are waiting and
- possibly have to be woken. */
- if (atomic_compare_and_exchange_bool_acq (gscope_flagp,
- THREAD_GSCOPE_FLAG_WAIT,
- THREAD_GSCOPE_FLAG_USED))
- continue;
-
- do
- lll_futex_wait (gscope_flagp, THREAD_GSCOPE_FLAG_WAIT);
- while (*gscope_flagp == THREAD_GSCOPE_FLAG_WAIT);
- }
-
- /* Now the list with threads using user-allocated stacks. */
- list_for_each (runp, &__stack_user)
- {
- struct pthread *t = list_entry (runp, struct pthread, list);
- if (t == self || t->header.gscope_flag == THREAD_GSCOPE_FLAG_UNUSED)
- continue;
-
- int *const gscope_flagp = &t->header.gscope_flag;
-
- /* We have to wait until this thread is done with the global
- scope. First tell the thread that we are waiting and
- possibly have to be woken. */
- if (atomic_compare_and_exchange_bool_acq (gscope_flagp,
- THREAD_GSCOPE_FLAG_WAIT,
- THREAD_GSCOPE_FLAG_USED))
- continue;
-
- do
- lll_futex_wait (gscope_flagp, THREAD_GSCOPE_FLAG_WAIT);
- while (*gscope_flagp == THREAD_GSCOPE_FLAG_WAIT);
- }
-
- lll_unlock (stack_cache_lock);
-}
diff --git a/nptl/descr.h b/nptl/descr.h
index 241ba527ed..321ce85085 100644
--- a/nptl/descr.h
+++ b/nptl/descr.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -131,7 +131,6 @@ struct pthread
struct
{
int multiple_threads;
- int gscope_flag;
} header;
#endif
diff --git a/nptl/init.c b/nptl/init.c
index 7144abd3fb..dddc975a5e 100644
--- a/nptl/init.c
+++ b/nptl/init.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -73,7 +73,7 @@ int __set_robust_list_avail;
static const char nptl_version[] __attribute_used__ = VERSION;
-#if defined USE_TLS && !defined SHARED
+#ifndef SHARED
extern void __libc_setup_tls (size_t tcbsize, size_t tcbalign);
#endif
@@ -386,8 +386,6 @@ __pthread_initialize_minimal_internal (void)
GL(dl_init_static_tls) = &__pthread_init_static_tls;
- GL(dl_wait_lookup_done) = &__wait_lookup_done;
-
/* Register the fork generation counter with the libc. */
#ifndef TLS_MULTIPLE_THREADS_IN_TCB
__libc_multiple_threads_ptr =
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 21ce6fe0b7..f9634ab0ff 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -545,8 +545,6 @@ extern int __nptl_setxid (struct xid_command *cmdp) attribute_hidden;
extern void __free_stack_cache (void) attribute_hidden;
-extern void __wait_lookup_done (void) attribute_hidden;
-
#ifdef SHARED
# define PTHREAD_STATIC_FN_REQUIRE(name)
#else
diff --git a/nptl/pthread_attr_setstack.c b/nptl/pthread_attr_setstack.c
index 622e4a2250..be79e32082 100644
--- a/nptl/pthread_attr_setstack.c
+++ b/nptl/pthread_attr_setstack.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -23,6 +23,11 @@
#include "pthreadP.h"
+#ifndef NEW_VERNUM
+# define NEW_VERNUM GLIBC_2_3_3
+#endif
+
+
int
__pthread_attr_setstack (attr, stackaddr, stacksize)
pthread_attr_t *attr;
@@ -54,9 +59,9 @@ strong_alias (__pthread_attr_setstack, pthread_attr_setstack)
#else
# include <shlib-compat.h>
versioned_symbol (libpthread, __pthread_attr_setstack, pthread_attr_setstack,
- GLIBC_2_3_3);
+ NEW_VERNUM);
-# if SHLIB_COMPAT(libpthread, GLIBC_2_2, GLIBC_2_3_3)
+# if SHLIB_COMPAT(libpthread, GLIBC_2_2, NEW_VERNUM)
int
__old_pthread_attr_setstack (pthread_attr_t *attr, void *stackaddr,
@@ -71,9 +76,9 @@ __old_pthread_attr_setstack (pthread_attr_t *attr, void *stackaddr,
if (stacksize < 16384)
return EINVAL;
-# ifdef EXTRA_PARAM_CHECKS
+# ifdef EXTRA_PARAM_CHECKS
EXTRA_PARAM_CHECKS;
-# endif
+# endif
iattr->stacksize = stacksize;
iattr->stackaddr = (char *) stackaddr + stacksize;
diff --git a/nptl/pthread_attr_setstacksize.c b/nptl/pthread_attr_setstacksize.c
index f84a9f68e3..0974538986 100644
--- a/nptl/pthread_attr_setstacksize.c
+++ b/nptl/pthread_attr_setstacksize.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -22,6 +22,10 @@
#include <limits.h>
#include "pthreadP.h"
+#ifndef NEW_VERNUM
+# define NEW_VERNUM GLIBC_2_3_3
+#endif
+
int
__pthread_attr_setstacksize (attr, stacksize)
@@ -47,9 +51,9 @@ strong_alias (__pthread_attr_setstacksize, pthread_attr_setstacksize)
#else
# include <shlib-compat.h>
versioned_symbol (libpthread, __pthread_attr_setstacksize,
- pthread_attr_setstacksize, GLIBC_2_3_3);
+ pthread_attr_setstacksize, NEW_VERNUM);
-# if SHLIB_COMPAT(libpthread, GLIBC_2_1, GLIBC_2_3_3)
+# if SHLIB_COMPAT(libpthread, GLIBC_2_1, NEW_VERNUM)
int
__old_pthread_attr_setstacksize (pthread_attr_t *attr, size_t stacksize)
@@ -63,6 +67,10 @@ __old_pthread_attr_setstacksize (pthread_attr_t *attr, size_t stacksize)
if (stacksize < 16384)
return EINVAL;
+# ifdef STACKSIZE_ADJUST
+ STACKSIZE_ADJUST;
+# endif
+
iattr->stacksize = stacksize;
return 0;
diff --git a/nptl/sysdeps/pthread/pthread_barrier_wait.c b/nptl/pthread_barrier_wait.c
index c6b563f242..c6b563f242 100644
--- a/nptl/sysdeps/pthread/pthread_barrier_wait.c
+++ b/nptl/pthread_barrier_wait.c
diff --git a/nptl/sysdeps/pthread/pthread_cond_broadcast.c b/nptl/pthread_cond_broadcast.c
index 2b8b5460f4..2b8b5460f4 100644
--- a/nptl/sysdeps/pthread/pthread_cond_broadcast.c
+++ b/nptl/pthread_cond_broadcast.c
diff --git a/nptl/sysdeps/pthread/pthread_cond_signal.c b/nptl/pthread_cond_signal.c
index 5a9bbcad91..5a9bbcad91 100644
--- a/nptl/sysdeps/pthread/pthread_cond_signal.c
+++ b/nptl/pthread_cond_signal.c
diff --git a/nptl/sysdeps/pthread/pthread_cond_timedwait.c b/nptl/pthread_cond_timedwait.c
index fdbf43eae8..fdbf43eae8 100644
--- a/nptl/sysdeps/pthread/pthread_cond_timedwait.c
+++ b/nptl/pthread_cond_timedwait.c
diff --git a/nptl/sysdeps/pthread/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index f5f5cec5a8..f5f5cec5a8 100644
--- a/nptl/sysdeps/pthread/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
diff --git a/nptl/pthread_getattr_np.c b/nptl/pthread_getattr_np.c
index f6cd8899d8..4bdc7b5b15 100644
--- a/nptl/pthread_getattr_np.c
+++ b/nptl/pthread_getattr_np.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -168,12 +168,8 @@ pthread_getattr_np (thread_id, attr)
{
free (cpuset);
if (ret == ENOSYS)
- {
- /* There is no such functionality. */
- ret = 0;
- iattr->cpuset = NULL;
- iattr->cpusetsize = 0;
- }
+ /* There is no such functionality. */
+ ret = 0;
}
}
diff --git a/nptl/sysdeps/pthread/pthread_getcpuclockid.c b/nptl/pthread_getcpuclockid.c
index 8506f94eb4..8506f94eb4 100644
--- a/nptl/sysdeps/pthread/pthread_getcpuclockid.c
+++ b/nptl/pthread_getcpuclockid.c
diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c
index 1c3ee4fe25..52cc47f4cc 100644
--- a/nptl/pthread_mutex_lock.c
+++ b/nptl/pthread_mutex_lock.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -127,8 +127,6 @@ __pthread_mutex_lock (mutex)
int newval = id;
#ifdef NO_INCR
newval |= FUTEX_WAITERS;
-#else
- newval |= (oldval & FUTEX_WAITERS);
#endif
newval
diff --git a/nptl/pthread_mutex_timedlock.c b/nptl/pthread_mutex_timedlock.c
index 8fd681c6ef..c8e6b8507a 100644
--- a/nptl/pthread_mutex_timedlock.c
+++ b/nptl/pthread_mutex_timedlock.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -119,11 +119,9 @@ pthread_mutex_timedlock (mutex, abstime)
if ((oldval & FUTEX_OWNER_DIED) != 0)
{
/* The previous owner died. Try locking the mutex. */
- int newval = id | (oldval & FUTEX_WAITERS);
-
- newval
+ int newval
= atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
- newval, oldval);
+ id, oldval);
if (newval != oldval)
{
oldval = newval;
diff --git a/nptl/pthread_mutex_trylock.c b/nptl/pthread_mutex_trylock.c
index 66aca8e4b2..94d519233b 100644
--- a/nptl/pthread_mutex_trylock.c
+++ b/nptl/pthread_mutex_trylock.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -91,11 +91,9 @@ __pthread_mutex_trylock (mutex)
if ((oldval & FUTEX_OWNER_DIED) != 0)
{
/* The previous owner died. Try locking the mutex. */
- int newval = id | (oldval & FUTEX_WAITERS);
-
- newval
+ int newval
= atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
- newval, oldval);
+ id, oldval);
if (newval != oldval)
{
diff --git a/nptl/sysdeps/pthread/pthread_once.c b/nptl/pthread_once.c
index 9b2cef8645..9b2cef8645 100644
--- a/nptl/sysdeps/pthread/pthread_once.c
+++ b/nptl/pthread_once.c
diff --git a/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c b/nptl/pthread_rwlock_rdlock.c
index e225d7030d..e225d7030d 100644
--- a/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c
+++ b/nptl/pthread_rwlock_rdlock.c
diff --git a/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c b/nptl/pthread_rwlock_timedrdlock.c
index 80ea83a3dd..80ea83a3dd 100644
--- a/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c
+++ b/nptl/pthread_rwlock_timedrdlock.c
diff --git a/nptl/sysdeps/pthread/pthread_rwlock_timedwrlock.c b/nptl/pthread_rwlock_timedwrlock.c
index 97c0598f96..97c0598f96 100644
--- a/nptl/sysdeps/pthread/pthread_rwlock_timedwrlock.c
+++ b/nptl/pthread_rwlock_timedwrlock.c
diff --git a/nptl/sysdeps/pthread/pthread_rwlock_unlock.c b/nptl/pthread_rwlock_unlock.c
index 9cae8b6c22..9cae8b6c22 100644
--- a/nptl/sysdeps/pthread/pthread_rwlock_unlock.c
+++ b/nptl/pthread_rwlock_unlock.c
diff --git a/nptl/sysdeps/pthread/pthread_rwlock_wrlock.c b/nptl/pthread_rwlock_wrlock.c
index 822aeed79c..822aeed79c 100644
--- a/nptl/sysdeps/pthread/pthread_rwlock_wrlock.c
+++ b/nptl/pthread_rwlock_wrlock.c
diff --git a/nptl/sysdeps/pthread/pthread_spin_destroy.c b/nptl/pthread_spin_destroy.c
index 4d0109cf02..4d0109cf02 100644
--- a/nptl/sysdeps/pthread/pthread_spin_destroy.c
+++ b/nptl/pthread_spin_destroy.c
diff --git a/nptl/sysdeps/pthread/pthread_spin_init.c b/nptl/pthread_spin_init.c
index c2275085e8..c2275085e8 100644
--- a/nptl/sysdeps/pthread/pthread_spin_init.c
+++ b/nptl/pthread_spin_init.c
diff --git a/nptl/sysdeps/pthread/pthread_spin_unlock.c b/nptl/pthread_spin_unlock.c
index f97cadfbd0..f97cadfbd0 100644
--- a/nptl/sysdeps/pthread/pthread_spin_unlock.c
+++ b/nptl/pthread_spin_unlock.c
diff --git a/nptl/sysdeps/alpha/tls.h b/nptl/sysdeps/alpha/tls.h
index 07db15939d..be2430f676 100644
--- a/nptl/sysdeps/alpha/tls.h
+++ b/nptl/sysdeps/alpha/tls.h
@@ -1,5 +1,5 @@
/* Definition for thread-local data handling. NPTL/Alpha version.
- Copyright (C) 2003, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2005, 2006 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
@@ -48,9 +48,6 @@ typedef union dtv
# error "TLS support is required."
#endif
-/* Signal that TLS support is available. */
-# define USE_TLS 1
-
#ifndef __ASSEMBLER__
/* Get system call information. */
@@ -124,29 +121,6 @@ typedef struct
#define THREAD_SETMEM_NC(descr, member, idx, value) \
descr->member[idx] = (value)
-/* Get and set the global scope generation counter in struct pthread. */
-#define THREAD_GSCOPE_FLAG_UNUSED 0
-#define THREAD_GSCOPE_FLAG_USED 1
-#define THREAD_GSCOPE_FLAG_WAIT 2
-#define THREAD_GSCOPE_RESET_FLAG() \
- do \
- { int __res \
- = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, \
- THREAD_GSCOPE_FLAG_UNUSED); \
- if (__res == THREAD_GSCOPE_FLAG_WAIT) \
- lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1); \
- } \
- while (0)
-#define THREAD_GSCOPE_SET_FLAG() \
- do \
- { \
- THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \
- atomic_write_barrier (); \
- } \
- while (0)
-#define THREAD_GSCOPE_WAIT() \
- GL(dl_wait_lookup_done) ()
-
#endif /* __ASSEMBLER__ */
#endif /* tls.h */
diff --git a/nptl/sysdeps/i386/tls.h b/nptl/sysdeps/i386/tls.h
index b3d9142fc5..d5b3797e69 100644
--- a/nptl/sysdeps/i386/tls.h
+++ b/nptl/sysdeps/i386/tls.h
@@ -1,5 +1,5 @@
/* Definition for thread-local data handling. nptl/i386 version.
- Copyright (C) 2002,2003,2004,2005,2007 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2005, 2006 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
@@ -51,7 +51,6 @@ typedef struct
uintptr_t sysinfo;
uintptr_t stack_guard;
uintptr_t pointer_guard;
- int gscope_flag;
} tcbhead_t;
# define TLS_MULTIPLE_THREADS_IN_TCB 1
@@ -66,9 +65,6 @@ typedef struct
# error "TLS support is required."
#endif
-/* Signal that TLS support is available. */
-#define USE_TLS 1
-
/* Alignment requirement for the stack. For IA-32 this is governed by
the SSE memory functions. */
#define STACK_ALIGN 16
@@ -435,26 +431,6 @@ union user_desc_init
= THREAD_GETMEM (THREAD_SELF, header.pointer_guard))
-/* Get and set the global scope generation counter in the TCB head. */
-#define THREAD_GSCOPE_FLAG_UNUSED 0
-#define THREAD_GSCOPE_FLAG_USED 1
-#define THREAD_GSCOPE_FLAG_WAIT 2
-#define THREAD_GSCOPE_RESET_FLAG() \
- do \
- { int __res; \
- asm volatile ("xchgl %0, %%gs:%P1" \
- : "=r" (__res) \
- : "i" (offsetof (struct pthread, header.gscope_flag)), \
- "0" (THREAD_GSCOPE_FLAG_UNUSED)); \
- if (__res == THREAD_GSCOPE_FLAG_WAIT) \
- lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1); \
- } \
- while (0)
-#define THREAD_GSCOPE_SET_FLAG() \
- THREAD_SETMEM (THREAD_SELF, header.gscope_flag, THREAD_GSCOPE_FLAG_USED)
-#define THREAD_GSCOPE_WAIT() \
- GL(dl_wait_lookup_done) ()
-
#endif /* __ASSEMBLER__ */
#endif /* tls.h */
diff --git a/nptl/sysdeps/ia64/pthread_spin_unlock.c b/nptl/sysdeps/ia64/pthread_spin_unlock.c
index 6232764b13..50d9c5f6a8 100644
--- a/nptl/sysdeps/ia64/pthread_spin_unlock.c
+++ b/nptl/sysdeps/ia64/pthread_spin_unlock.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
@@ -23,6 +23,6 @@
int
pthread_spin_unlock (pthread_spinlock_t *lock)
{
- __sync_lock_release_si ((int *) lock);
+ __sync_lock_release ((int *) lock);
return 0;
}
diff --git a/nptl/sysdeps/ia64/tls.h b/nptl/sysdeps/ia64/tls.h
index a43f096798..22a8b08144 100644
--- a/nptl/sysdeps/ia64/tls.h
+++ b/nptl/sysdeps/ia64/tls.h
@@ -1,5 +1,5 @@
/* Definition for thread-local data handling. nptl/IA-64 version.
- Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2005, 2006 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
@@ -61,9 +61,6 @@ register struct pthread *__thread_self __asm__("r13");
# error "TLS support is required."
#endif
-/* Signal that TLS support is available. */
-#define USE_TLS 1
-
/* Alignment requirement for the stack. */
#define STACK_ALIGN 16
@@ -166,29 +163,6 @@ register struct pthread *__thread_self __asm__("r13");
(((uintptr_t *) ((char *) (descr) + TLS_PRE_TCB_SIZE))[-2] \
= THREAD_GET_POINTER_GUARD ())
-/* Get and set the global scope generation counter in struct pthread. */
-#define THREAD_GSCOPE_FLAG_UNUSED 0
-#define THREAD_GSCOPE_FLAG_USED 1
-#define THREAD_GSCOPE_FLAG_WAIT 2
-#define THREAD_GSCOPE_RESET_FLAG() \
- do \
- { int __res \
- = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, \
- THREAD_GSCOPE_FLAG_UNUSED); \
- if (__res == THREAD_GSCOPE_FLAG_WAIT) \
- lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1); \
- } \
- while (0)
-#define THREAD_GSCOPE_SET_FLAG() \
- do \
- { \
- THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \
- atomic_write_barrier (); \
- } \
- while (0)
-#define THREAD_GSCOPE_WAIT() \
- GL(dl_wait_lookup_done) ()
-
#endif /* __ASSEMBLER__ */
#endif /* tls.h */
diff --git a/nptl/sysdeps/powerpc/tls.h b/nptl/sysdeps/powerpc/tls.h
index ad5698c6f8..ddaafe23d0 100644
--- a/nptl/sysdeps/powerpc/tls.h
+++ b/nptl/sysdeps/powerpc/tls.h
@@ -1,5 +1,5 @@
/* Definition for thread-local data handling. NPTL/PowerPC version.
- Copyright (C) 2003, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2005, 2006 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
@@ -48,9 +48,6 @@ typedef union dtv
# error "TLS support is required."
#endif
-/* Signal that TLS support is available. */
-# define USE_TLS 1
-
#ifndef __ASSEMBLER__
/* Get system call information. */
@@ -183,29 +180,6 @@ register void *__thread_register __asm__ ("r13");
different value to mean unset l_tls_offset. */
# define NO_TLS_OFFSET -1
-/* Get and set the global scope generation counter in struct pthread. */
-#define THREAD_GSCOPE_FLAG_UNUSED 0
-#define THREAD_GSCOPE_FLAG_USED 1
-#define THREAD_GSCOPE_FLAG_WAIT 2
-#define THREAD_GSCOPE_RESET_FLAG() \
- do \
- { int __res \
- = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, \
- THREAD_GSCOPE_FLAG_UNUSED); \
- if (__res == THREAD_GSCOPE_FLAG_WAIT) \
- lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1); \
- } \
- while (0)
-#define THREAD_GSCOPE_SET_FLAG() \
- do \
- { \
- THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \
- atomic_write_barrier (); \
- } \
- while (0)
-#define THREAD_GSCOPE_WAIT() \
- GL(dl_wait_lookup_done) ()
-
#endif /* __ASSEMBLER__ */
#endif /* tls.h */
diff --git a/nptl/sysdeps/s390/tls.h b/nptl/sysdeps/s390/tls.h
index 8e8f86d64e..6f6f17b975 100644
--- a/nptl/sysdeps/s390/tls.h
+++ b/nptl/sysdeps/s390/tls.h
@@ -1,5 +1,5 @@
/* Definition for thread-local data handling. NPTL/s390 version.
- Copyright (C) 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2005, 2006 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
@@ -50,7 +50,6 @@ typedef struct
int multiple_threads;
uintptr_t sysinfo;
uintptr_t stack_guard;
- int gscope_flag;
} tcbhead_t;
# ifndef __s390x__
@@ -67,9 +66,6 @@ typedef struct
# error "TLS support is required."
#endif
-/* Signal that TLS support is available. */
-#define USE_TLS 1
-
/* Alignment requirement for the stack. For IA-32 this is governed by
the SSE memory functions. */
#define STACK_ALIGN 16
@@ -172,29 +168,6 @@ typedef struct
#define THREAD_SET_POINTER_GUARD(value)
#define THREAD_COPY_POINTER_GUARD(descr)
-/* Get and set the global scope generation counter in struct pthread. */
-#define THREAD_GSCOPE_FLAG_UNUSED 0
-#define THREAD_GSCOPE_FLAG_USED 1
-#define THREAD_GSCOPE_FLAG_WAIT 2
-#define THREAD_GSCOPE_RESET_FLAG() \
- do \
- { int __res \
- = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, \
- THREAD_GSCOPE_FLAG_UNUSED); \
- if (__res == THREAD_GSCOPE_FLAG_WAIT) \
- lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1); \
- } \
- while (0)
-#define THREAD_GSCOPE_SET_FLAG() \
- do \
- { \
- THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \
- atomic_write_barrier (); \
- } \
- while (0)
-#define THREAD_GSCOPE_WAIT() \
- GL(dl_wait_lookup_done) ()
-
#endif /* __ASSEMBLER__ */
#endif /* tls.h */
diff --git a/nptl/sysdeps/sh/tls.h b/nptl/sysdeps/sh/tls.h
index 2873fe73a8..d9aa1073b8 100644
--- a/nptl/sysdeps/sh/tls.h
+++ b/nptl/sysdeps/sh/tls.h
@@ -1,5 +1,5 @@
/* Definition for thread-local data handling. NPTL/SH version.
- Copyright (C) 2003, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2005, 2006 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
@@ -56,9 +56,6 @@ typedef struct
# error "TLS support is required."
#endif
-/* Signal that TLS support is available. */
-# define USE_TLS 1
-
#ifndef __ASSEMBLER__
/* Get system call information. */
@@ -153,29 +150,6 @@ typedef struct
__asm __volatile ("stc gbr,%0" : "=r" (__tcbp)); \
((tcbhead_t *) (descr + 1))->pointer_guard = __tcbp->pointer_guard;})
-/* Get and set the global scope generation counter in struct pthread. */
-#define THREAD_GSCOPE_FLAG_UNUSED 0
-#define THREAD_GSCOPE_FLAG_USED 1
-#define THREAD_GSCOPE_FLAG_WAIT 2
-#define THREAD_GSCOPE_RESET_FLAG() \
- do \
- { int __res \
- = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, \
- THREAD_GSCOPE_FLAG_UNUSED); \
- if (__res == THREAD_GSCOPE_FLAG_WAIT) \
- lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1); \
- } \
- while (0)
-#define THREAD_GSCOPE_SET_FLAG() \
- do \
- { \
- THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \
- atomic_write_barrier (); \
- } \
- while (0)
-#define THREAD_GSCOPE_WAIT() \
- GL(dl_wait_lookup_done) ()
-
#endif /* __ASSEMBLER__ */
#endif /* tls.h */
diff --git a/nptl/sysdeps/sparc/tls.h b/nptl/sysdeps/sparc/tls.h
index 90a3e0bf3d..4fbe426595 100644
--- a/nptl/sysdeps/sparc/tls.h
+++ b/nptl/sysdeps/sparc/tls.h
@@ -1,5 +1,5 @@
/* Definitions for thread-local data handling. NPTL/sparc version.
- Copyright (C) 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2005, 2006 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
@@ -46,15 +46,9 @@ typedef struct
dtv_t *dtv;
void *self;
int multiple_threads;
-#if __WORDSIZE == 64
- int gscope_flag;
-#endif
uintptr_t sysinfo;
uintptr_t stack_guard;
uintptr_t pointer_guard;
-#if __WORDSIZE != 64
- int gscope_flag;
-#endif
} tcbhead_t;
#else /* __ASSEMBLER__ */
@@ -66,9 +60,6 @@ typedef struct
# error "TLS support is required."
#endif
-/* Signal that TLS support is available. */
-#define USE_TLS 1
-
#ifndef __ASSEMBLER__
/* Get system call information. */
# include <sysdep.h>
@@ -150,29 +141,6 @@ register struct pthread *__thread_self __asm__("%g7");
# define THREAD_COPY_POINTER_GUARD(descr) \
((descr)->header.pointer_guard = THREAD_GET_POINTER_GUARD ())
-/* Get and set the global scope generation counter in struct pthread. */
-#define THREAD_GSCOPE_FLAG_UNUSED 0
-#define THREAD_GSCOPE_FLAG_USED 1
-#define THREAD_GSCOPE_FLAG_WAIT 2
-#define THREAD_GSCOPE_RESET_FLAG() \
- do \
- { int __res \
- = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, \
- THREAD_GSCOPE_FLAG_UNUSED); \
- if (__res == THREAD_GSCOPE_FLAG_WAIT) \
- lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1); \
- } \
- while (0)
-#define THREAD_GSCOPE_SET_FLAG() \
- do \
- { \
- THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \
- atomic_write_barrier (); \
- } \
- while (0)
-#define THREAD_GSCOPE_WAIT() \
- GL(dl_wait_lookup_done) ()
-
#endif /* !ASSEMBLER */
#endif /* tls.h */
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h b/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h
index e0718780cc..9b27b1ff48 100644
--- a/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h
+++ b/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h
@@ -87,3 +87,6 @@
/* Maximum message queue priority level. */
#define MQ_PRIO_MAX 32768
+
+/* Maximum value the semaphore can have. */
+#define SEM_VALUE_MAX (2147483647)
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/bits/semaphore.h b/nptl/sysdeps/unix/sysv/linux/alpha/bits/semaphore.h
index 6dadfda206..be4469c69d 100644
--- a/nptl/sysdeps/unix/sysv/linux/alpha/bits/semaphore.h
+++ b/nptl/sysdeps/unix/sysv/linux/alpha/bits/semaphore.h
@@ -26,9 +26,6 @@
/* Value returned if `sem_open' failed. */
#define SEM_FAILED ((sem_t *) 0)
-/* Maximum value the semaphore can have. */
-#define SEM_VALUE_MAX (2147483647)
-
typedef union
{
diff --git a/nptl/sysdeps/unix/sysv/linux/bits/local_lim.h b/nptl/sysdeps/unix/sysv/linux/bits/local_lim.h
index b639ba44af..4b7b29787e 100644
--- a/nptl/sysdeps/unix/sysv/linux/bits/local_lim.h
+++ b/nptl/sysdeps/unix/sysv/linux/bits/local_lim.h
@@ -87,3 +87,6 @@
/* Maximum message queue priority level. */
#define MQ_PRIO_MAX 32768
+
+/* Maximum value the semaphore can have. */
+#define SEM_VALUE_MAX (2147483647)
diff --git a/nptl/sysdeps/unix/sysv/linux/fork.c b/nptl/sysdeps/unix/sysv/linux/fork.c
index 98bb237c06..840974401b 100644
--- a/nptl/sysdeps/unix/sysv/linux/fork.c
+++ b/nptl/sysdeps/unix/sysv/linux/fork.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -167,11 +167,8 @@ __libc_fork (void)
allp->handler->child_handler ();
/* Note that we do not have to wake any possible waiter.
- This is the only thread in the new process. The count
- may have been bumped up by other threads doing a fork.
- We reset it to 1, to avoid waiting for non-existing
- thread(s) to release the count. */
- allp->handler->refcntr = 1;
+ This is the only thread in the new process. */
+ --allp->handler->refcntr;
/* XXX We could at this point look through the object pool
and mark all objects not on the __fork_handlers list as
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/bits/semaphore.h b/nptl/sysdeps/unix/sysv/linux/i386/bits/semaphore.h
index e6c5d845ce..934493c308 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/bits/semaphore.h
+++ b/nptl/sysdeps/unix/sysv/linux/i386/bits/semaphore.h
@@ -28,9 +28,6 @@
/* Value returned if `sem_open' failed. */
#define SEM_FAILED ((sem_t *) 0)
-/* Maximum value the semaphore can have. */
-#define SEM_VALUE_MAX (2147483647)
-
typedef union
{
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S
index bf70e17fca..aa1f9f41ca 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -79,7 +79,10 @@ sem_timedwait:
jae 6f
cfi_offset(3, -16) /* %ebx */
-7: xorl %ecx, %ecx
+7: call __pthread_enable_asynccancel
+ movl %eax, 8(%esp)
+
+ xorl %ecx, %ecx
movl %esp, %ebx
movl %ecx, %edx
movl $SYS_gettimeofday, %eax
@@ -102,10 +105,6 @@ sem_timedwait:
movl %ecx, (%esp) /* Store relative timeout. */
movl %edx, 4(%esp)
-
- call __pthread_enable_asynccancel
- movl %eax, 8(%esp)
-
movl 28(%esp), %ebx
xorl %ecx, %ecx
movl %esp, %esi
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
index d60dcd33d5..1cd4b9b8b6 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
+++ b/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
@@ -58,6 +58,7 @@
# define SAVE_OLDTYPE_3 SAVE_OLDTYPE_2
# define SAVE_OLDTYPE_4 SAVE_OLDTYPE_2
# define SAVE_OLDTYPE_5 SAVE_OLDTYPE_2
+# define SAVE_OLDTYPE_6 SAVE_OLDTYPE_2
# define PUSHCARGS_0 /* No arguments to push. */
# define DOCARGS_0 /* No arguments to frob. */
@@ -101,6 +102,14 @@
# define _POPCARGS_5 _POPCARGS_4; popl %edi; \
cfi_adjust_cfa_offset (-4); cfi_restore (edi);
+# define PUSHCARGS_6 _PUSHCARGS_6
+# define DOCARGS_6 _DOARGS_6 (44)
+# define POPCARGS_6 _POPCARGS_6
+# define _PUSHCARGS_6 pushl %ebp; cfi_adjust_cfa_offset (4); \
+ cfi_rel_offset (ebp, 0); _PUSHCARGS_5
+# define _POPCARGS_6 _POPCARGS_5; popl %ebp; \
+ cfi_adjust_cfa_offset (-4); cfi_restore (ebp);
+
# ifdef IS_IN_libpthread
# define CENABLE call __pthread_enable_asynccancel;
# define CDISABLE call __pthread_disable_asynccancel
@@ -122,6 +131,7 @@
# define POPSTATE_3 POPSTATE_2
# define POPSTATE_4 POPSTATE_3
# define POPSTATE_5 POPSTATE_4
+# define POPSTATE_6 POPSTATE_5
# ifndef __ASSEMBLER__
# define SINGLE_THREAD_P \
diff --git a/nptl/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h b/nptl/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h
index f837250b95..83db31efcb 100644
--- a/nptl/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h
+++ b/nptl/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h
@@ -87,3 +87,6 @@
/* Maximum message queue priority level. */
#define MQ_PRIO_MAX 32768
+
+/* Maximum value the semaphore can have. */
+#define SEM_VALUE_MAX (2147483647)
diff --git a/nptl/sysdeps/unix/sysv/linux/ia64/bits/semaphore.h b/nptl/sysdeps/unix/sysv/linux/ia64/bits/semaphore.h
index 2329e98667..0684aebe24 100644
--- a/nptl/sysdeps/unix/sysv/linux/ia64/bits/semaphore.h
+++ b/nptl/sysdeps/unix/sysv/linux/ia64/bits/semaphore.h
@@ -28,9 +28,6 @@
/* Value returned if `sem_open' failed. */
#define SEM_FAILED ((sem_t *) 0)
-/* Maximum value the semaphore can have. */
-#define SEM_VALUE_MAX (2147483647)
-
typedef union
{
diff --git a/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c b/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c
index 30ef991bd0..3e88ee1866 100644
--- a/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c
+++ b/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2006.
@@ -30,10 +30,6 @@ __lll_robust_lock_wait (int *futex)
int oldval = *futex;
int tid = THREAD_GETMEM (THREAD_SELF, tid);
- /* If the futex changed meanwhile try locking again. */
- if (oldval == 0)
- goto try;
-
do
{
if (__builtin_expect (oldval & FUTEX_OWNER_DIED, 0))
@@ -45,9 +41,6 @@ __lll_robust_lock_wait (int *futex)
continue;
lll_futex_wait (futex, newval);
-
- try:
- ;
}
while ((oldval = atomic_compare_and_exchange_val_acq (futex,
tid | FUTEX_WAITERS,
@@ -64,11 +57,6 @@ __lll_robust_timedlock_wait (int *futex, const struct timespec *abstime)
return EINVAL;
int tid = THREAD_GETMEM (THREAD_SELF, tid);
- int oldval = *futex;
-
- /* If the futex changed meanwhile try locking again. */
- if (oldval == 0)
- goto try;
do
{
@@ -92,6 +80,7 @@ __lll_robust_timedlock_wait (int *futex, const struct timespec *abstime)
return ETIMEDOUT;
/* Wait. */
+ int oldval = *futex;
if (__builtin_expect (oldval & FUTEX_OWNER_DIED, 0))
return oldval;
@@ -101,13 +90,8 @@ __lll_robust_timedlock_wait (int *futex, const struct timespec *abstime)
continue;
lll_futex_timed_wait (futex, newval, &rt);
-
- try:
- ;
}
- while ((oldval = atomic_compare_and_exchange_val_acq (futex,
- tid | FUTEX_WAITERS,
- 0)) != 0);
+ while (atomic_compare_and_exchange_bool_acq (futex, tid | FUTEX_WAITERS, 0));
return 0;
}
diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/Versions b/nptl/sysdeps/unix/sysv/linux/powerpc/Versions
index 9977847984..6b5a0362da 100644
--- a/nptl/sysdeps/unix/sysv/linux/powerpc/Versions
+++ b/nptl/sysdeps/unix/sysv/linux/powerpc/Versions
@@ -2,4 +2,8 @@ libpthread {
GLIBC_2.3.4 {
longjmp; siglongjmp;
}
+ GLIBC_2.6 {
+ # Changed PTHREAD_STACK_MIN.
+ pthread_attr_setstack; pthread_attr_setstacksize;
+ }
}
diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h b/nptl/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h
new file mode 100644
index 0000000000..02e2d17343
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h
@@ -0,0 +1,93 @@
+/* Minimum guaranteed maximum values for system limits. Linux/PPC version.
+ Copyright (C) 1993-1998,2000,2002-2004,2006 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; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* The kernel header pollutes the namespace with the NR_OPEN symbol
+ and defines LINK_MAX although filesystems have different maxima. A
+ similar thing is true for OPEN_MAX: the limit can be changed at
+ runtime and therefore the macro must not be defined. Remove this
+ after including the header if necessary. */
+#ifndef NR_OPEN
+# define __undef_NR_OPEN
+#endif
+#ifndef LINK_MAX
+# define __undef_LINK_MAX
+#endif
+#ifndef OPEN_MAX
+# define __undef_OPEN_MAX
+#endif
+
+/* The kernel sources contain a file with all the needed information. */
+#include <linux/limits.h>
+
+/* Have to remove NR_OPEN? */
+#ifdef __undef_NR_OPEN
+# undef NR_OPEN
+# undef __undef_NR_OPEN
+#endif
+/* Have to remove LINK_MAX? */
+#ifdef __undef_LINK_MAX
+# undef LINK_MAX
+# undef __undef_LINK_MAX
+#endif
+/* Have to remove OPEN_MAX? */
+#ifdef __undef_OPEN_MAX
+# undef OPEN_MAX
+# undef __undef_OPEN_MAX
+#endif
+
+/* The number of data keys per process. */
+#define _POSIX_THREAD_KEYS_MAX 128
+/* This is the value this implementation supports. */
+#define PTHREAD_KEYS_MAX 1024
+
+/* Controlling the iterations of destructors for thread-specific data. */
+#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
+/* Number of iterations this implementation does. */
+#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
+
+/* The number of threads per process. */
+#define _POSIX_THREAD_THREADS_MAX 64
+/* We have no predefined limit on the number of threads. */
+#undef PTHREAD_THREADS_MAX
+
+/* Maximum amount by which a process can descrease its asynchronous I/O
+ priority level. */
+#define AIO_PRIO_DELTA_MAX 20
+
+/* Minimum size for a thread. At least two pages for systems with 64k
+ pages. */
+#define PTHREAD_STACK_MIN 131072
+
+/* Maximum number of timer expiration overruns. */
+#define DELAYTIMER_MAX 2147483647
+
+/* Maximum tty name length. */
+#define TTY_NAME_MAX 32
+
+/* Maximum login name length. This is arbitrary. */
+#define LOGIN_NAME_MAX 256
+
+/* Maximum host name length. */
+#define HOST_NAME_MAX 64
+
+/* Maximum message queue priority level. */
+#define MQ_PRIO_MAX 32768
+
+/* Maximum value the semaphore can have. */
+#define SEM_VALUE_MAX (2147483647)
diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h b/nptl/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h
index 8123b418b5..c7f121ba5b 100644
--- a/nptl/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h
+++ b/nptl/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h
@@ -33,9 +33,6 @@
/* Value returned if `sem_open' failed. */
#define SEM_FAILED ((sem_t *) 0)
-/* Maximum value the semaphore can have. */
-#define SEM_VALUE_MAX (2147483647)
-
typedef union
{
diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstack.c b/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstack.c
new file mode 100644
index 0000000000..2cb0a13bcb
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstack.c
@@ -0,0 +1,2 @@
+#define NEW_VERNUM GLIBC_2_6
+#include <nptl/pthread_attr_setstack.c>
diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstacksize.c b/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstacksize.c
new file mode 100644
index 0000000000..9472dd17ef
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstacksize.c
@@ -0,0 +1,8 @@
+#define NEW_VERNUM GLIBC_2_6
+#define STACKSIZE_ADJUST \
+ do { \
+ size_t ps = __getpagesize (); \
+ if (stacksize < 2 * ps) \
+ stacksize = 2 * ps; \
+ } while (0)
+#include <nptl/pthread_attr_setstacksize.c>
diff --git a/nptl/sysdeps/unix/sysv/linux/rtld-lowlevel.h b/nptl/sysdeps/unix/sysv/linux/rtld-lowlevel.h
index 39db5a3bd4..6b3d3682da 100644
--- a/nptl/sysdeps/unix/sysv/linux/rtld-lowlevel.h
+++ b/nptl/sysdeps/unix/sysv/linux/rtld-lowlevel.h
@@ -1,5 +1,5 @@
/* Defintions for lowlevel handling in ld.so.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2006 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
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/bits/semaphore.h b/nptl/sysdeps/unix/sysv/linux/s390/bits/semaphore.h
index ead2663047..111462f0fb 100644
--- a/nptl/sysdeps/unix/sysv/linux/s390/bits/semaphore.h
+++ b/nptl/sysdeps/unix/sysv/linux/s390/bits/semaphore.h
@@ -32,9 +32,6 @@
/* Value returned if `sem_open' failed. */
#define SEM_FAILED ((sem_t *) 0)
-/* Maximum value the semaphore can have. */
-#define SEM_VALUE_MAX (2147483647)
-
typedef union
{
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
index 17ab562daa..6b0240243a 100644
--- a/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
+++ b/nptl/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
@@ -45,7 +45,13 @@ L(pseudo_cancel): \
bas %r14,0(%r1,%r13); \
lr %r0,%r2; \
LM_##args \
- DO_CALL(syscall_name, args); \
+ .if SYS_ify (syscall_name) < 256; \
+ svc SYS_ify (syscall_name); \
+ .else; \
+ lhi %r1,SYS_ify (syscall_name); \
+ svc 0; \
+ .endif; \
+ LR7_##args \
l %r1,2f-0b(%r13); \
lr %r12,%r2; \
lr %r2,%r0; \
@@ -89,6 +95,7 @@ L(pseudo_end):
#define STM_3 stm %r2,%r4,8(%r15);
#define STM_4 stm %r2,%r5,8(%r15);
#define STM_5 stm %r2,%r5,8(%r15);
+#define STM_6 stm %r2,%r7,8(%r15);
#define LM_0 /* Nothing */
#define LM_1 l %r2,8+96(%r15);
@@ -96,6 +103,18 @@ L(pseudo_end):
#define LM_3 lm %r2,%r4,8+96(%r15);
#define LM_4 lm %r2,%r5,8+96(%r15);
#define LM_5 lm %r2,%r5,8+96(%r15);
+#define LM_6 lm %r2,%r5,8+96(%r15); \
+ cfi_offset (%r7, -68); \
+ l %r7,96+96(%r15);
+
+#define LR7_0 /* Nothing */
+#define LR7_1 /* Nothing */
+#define LR7_2 /* Nothing */
+#define LR7_3 /* Nothing */
+#define LR7_4 /* Nothing */
+#define LR7_5 /* Nothing */
+#define LR7_6 l %r7,28+96(%r15); \
+ cfi_restore (%r7);
# ifndef __ASSEMBLER__
# define SINGLE_THREAD_P \
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
index 77ce742495..70d5a86429 100644
--- a/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
+++ b/nptl/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
@@ -42,7 +42,13 @@ L(pseudo_cancel): \
brasl %r14,CENABLE; \
lgr %r0,%r2; \
LM_##args \
- DO_CALL(syscall_name, args); \
+ .if SYS_ify (syscall_name) < 256; \
+ svc SYS_ify (syscall_name); \
+ .else; \
+ lghi %r1,SYS_ify (syscall_name); \
+ svc 0; \
+ .endif; \
+ LR7_##args \
lgr %r13,%r2; \
lgr %r2,%r0; \
brasl %r14,CDISABLE; \
@@ -85,6 +91,7 @@ L(pseudo_end):
#define STM_3 stmg %r2,%r4,16(%r15);
#define STM_4 stmg %r2,%r5,16(%r15);
#define STM_5 stmg %r2,%r5,16(%r15);
+#define STM_6 stmg %r2,%r7,16(%r15);
#define LM_0 /* Nothing */
#define LM_1 lg %r2,16+160(%r15);
@@ -92,6 +99,18 @@ L(pseudo_end):
#define LM_3 lmg %r2,%r4,16+160(%r15);
#define LM_4 lmg %r2,%r5,16+160(%r15);
#define LM_5 lmg %r2,%r5,16+160(%r15);
+#define LM_6 lmg %r2,%r5,16+160(%r15); \
+ cfi_offset (%r7, -104); \
+ lg %r7,160+160(%r15);
+
+#define LR7_0 /* Nothing */
+#define LR7_1 /* Nothing */
+#define LR7_2 /* Nothing */
+#define LR7_3 /* Nothing */
+#define LR7_4 /* Nothing */
+#define LR7_5 /* Nothing */
+#define LR7_6 lg %r7,56+160(%r15); \
+ cfi_restore (%r7);
# if defined IS_IN_libpthread || !defined NOT_IN_libc
# ifndef __ASSEMBLER__
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/bits/semaphore.h b/nptl/sysdeps/unix/sysv/linux/sh/bits/semaphore.h
index e6c5d845ce..934493c308 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/bits/semaphore.h
+++ b/nptl/sysdeps/unix/sysv/linux/sh/bits/semaphore.h
@@ -28,9 +28,6 @@
/* Value returned if `sem_open' failed. */
#define SEM_FAILED ((sem_t *) 0)
-/* Maximum value the semaphore can have. */
-#define SEM_VALUE_MAX (2147483647)
-
typedef union
{
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h b/nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h
index e082ea8f04..2576f121c3 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h
@@ -87,3 +87,6 @@
/* Maximum message queue priority level. */
#define MQ_PRIO_MAX 32768
+
+/* Maximum value the semaphore can have. */
+#define SEM_VALUE_MAX (2147483647)
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/bits/semaphore.h b/nptl/sysdeps/unix/sysv/linux/sparc/bits/semaphore.h
index 7f3a328326..8fd7d344ea 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/bits/semaphore.h
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/bits/semaphore.h
@@ -33,9 +33,6 @@
/* Value returned if `sem_open' failed. */
#define SEM_FAILED ((sem_t *) 0)
-/* Maximum value the semaphore can have. */
-#define SEM_VALUE_MAX (2147483647)
-
typedef union
{
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_wait.c b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_wait.c
index 7613863bba..55d20eb8f8 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_wait.c
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_wait.c
@@ -1 +1 @@
-#include "../../../../../../pthread/pthread_barrier_wait.c"
+#include "../../../../../../../pthread_barrier_wait.c"
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h b/nptl/sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h
index 57edbbbfb3..e973bc5bfb 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h
@@ -33,9 +33,6 @@
/* Value returned if `sem_open' failed. */
#define SEM_FAILED ((sem_t *) 0)
-/* Maximum value the semaphore can have. */
-#define SEM_VALUE_MAX (2147483647)
-
typedef union
{
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
index 394dec8d82..90f10e6f4f 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -164,7 +164,7 @@ __lll_mutex_timedlock_wait:
8: /* NB: %edx == 2 */
xorl %eax, %eax
LOCK
- cmpxchgl %edx, (%r12)
+ cmpxchgl %edx, (%rdi)
jnz 7f
6: addq $16, %rsp
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
index 97085bf018..4030bb7fb8 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -35,6 +35,7 @@
#define SYS_futex 202
#define FUTEX_WAIT 0
#define FUTEX_WAKE 1
+#define FUTEX_CMP_REQUEUE 4
#define FUTEX_LOCK_PI 6
#define FUTEX_UNLOCK_PI 7
#define FUTEX_TRYLOCK_PI 8
@@ -150,7 +151,7 @@ LLL_STUB_UNWIND_INFO_END
#define lll_futex_wait(futex, val) \
({ \
int __status; \
- register __typeof (val) _val asm ("edx") = (val); \
+ register __typeof (val) _val __asm ("edx") = (val); \
__asm __volatile ("xorq %%r10, %%r10\n\t" \
"syscall" \
: "=a" (__status) \
@@ -163,22 +164,22 @@ LLL_STUB_UNWIND_INFO_END
#define lll_futex_timed_wait(futex, val, timeout) \
({ \
- register const struct timespec *__to __asm__ ("r10") = timeout; \
+ register const struct timespec *__to __asm ("r10") = timeout; \
int __status; \
- register __typeof (val) _val asm ("edx") = (val); \
+ register __typeof (val) _val __asm ("edx") = (val); \
__asm __volatile ("syscall" \
: "=a" (__status) \
: "0" (SYS_futex), "D" (futex), "S" (FUTEX_WAIT), \
"d" (_val), "r" (__to) \
: "memory", "cc", "r11", "cx"); \
- __status; \
+ -__status; \
})
#define lll_futex_wake(futex, nr) \
do { \
int __ignore; \
- register __typeof (nr) _nr asm ("edx") = (nr); \
+ register __typeof (nr) _nr __asm ("edx") = (nr); \
__asm __volatile ("syscall" \
: "=a" (__ignore) \
: "0" (SYS_futex), "D" (futex), "S" (FUTEX_WAKE), \
@@ -423,6 +424,21 @@ extern int __lll_mutex_unlock_wait (int *__futex) attribute_hidden;
: "cx", "r11", "cc", "memory"); })
+/* Returns non-zero if error happened, zero if success. */
+#define lll_futex_requeue(ftx, nr_wake, nr_move, mutex, val) \
+ ({ int __res; \
+ register int __nr_move __asm ("r10") = nr_move; \
+ register void *__mutex __asm ("r8") = mutex; \
+ register int __val __asm ("r9") = val; \
+ __asm __volatile ("syscall" \
+ : "=a" (__res) \
+ : "0" (__NR_futex), "D" ((void *) ftx), \
+ "S" (FUTEX_CMP_REQUEUE), "d" (nr_wake), \
+ "r" (__nr_move), "r" (__mutex), "r" (__val) \
+ : "cx", "r11", "cc", "memory"); \
+ __res < 0; })
+
+
#define lll_mutex_islocked(futex) \
(futex != LLL_MUTEX_LOCK_INITIALIZER)
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S
index 51136cf2dc..c44d3f5e77 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -79,7 +79,10 @@ sem_timedwait:
cfi_offset(14, -24) /* %r14 */
jae 6f
-7: xorl %esi, %esi
+7: call __pthread_enable_asynccancel
+ movl %eax, 16(%rsp)
+
+ xorl %esi, %esi
movq %rsp, %rdi
movq $VSYSCALL_ADDR_vgettimeofday, %rax
callq *%rax
@@ -102,9 +105,6 @@ sem_timedwait:
movq %rdi, (%rsp) /* Store relative timeout. */
movq %rsi, 8(%rsp)
- call __pthread_enable_asynccancel
- movl %eax, 16(%rsp)
-
movq %rsp, %r10
movq %r12, %rdi
xorl %esi, %esi
diff --git a/nptl/sysdeps/x86_64/tls.h b/nptl/sysdeps/x86_64/tls.h
index b6385b135c..7618573e0b 100644
--- a/nptl/sysdeps/x86_64/tls.h
+++ b/nptl/sysdeps/x86_64/tls.h
@@ -1,5 +1,5 @@
/* Definition for thread-local data handling. nptl/x86_64 version.
- Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2005, 2006 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
@@ -47,7 +47,6 @@ typedef struct
dtv_t *dtv;
void *self; /* Pointer to the thread descriptor. */
int multiple_threads;
- int gscope_flag;
uintptr_t sysinfo;
uintptr_t stack_guard;
uintptr_t pointer_guard;
@@ -63,9 +62,6 @@ typedef struct
# error "TLS support is required."
#endif
-/* Signal that TLS support is available. */
-#define USE_TLS 1
-
/* Alignment requirement for the stack. */
#define STACK_ALIGN 16
@@ -340,26 +336,6 @@ typedef struct
= THREAD_GETMEM (THREAD_SELF, header.pointer_guard))
-/* Get and set the global scope generation counter in the TCB head. */
-#define THREAD_GSCOPE_FLAG_UNUSED 0
-#define THREAD_GSCOPE_FLAG_USED 1
-#define THREAD_GSCOPE_FLAG_WAIT 2
-#define THREAD_GSCOPE_RESET_FLAG() \
- do \
- { int __res; \
- asm volatile ("xchgl %0, %%fs:%P1" \
- : "=r" (__res) \
- : "i" (offsetof (struct pthread, header.gscope_flag)), \
- "0" (THREAD_GSCOPE_FLAG_UNUSED)); \
- if (__res == THREAD_GSCOPE_FLAG_WAIT) \
- lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1); \
- } \
- while (0)
-#define THREAD_GSCOPE_SET_FLAG() \
- THREAD_SETMEM (THREAD_SELF, header.gscope_flag, THREAD_GSCOPE_FLAG_USED)
-#define THREAD_GSCOPE_WAIT() \
- GL(dl_wait_lookup_done) ()
-
#endif /* __ASSEMBLER__ */
#endif /* tls.h */
diff --git a/nptl/tst-cancel-wrappers.sh b/nptl/tst-cancel-wrappers.sh
index 61b9fb52de..d6f16d1ed2 100644
--- a/nptl/tst-cancel-wrappers.sh
+++ b/nptl/tst-cancel-wrappers.sh
@@ -1,6 +1,6 @@
#! /bin/sh
# Test whether all cancelable functions are cancelable.
-# Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
@@ -26,7 +26,6 @@ C["close"]=1
C["connect"]=1
C["creat"]=1
C["fcntl"]=1
-C["fdatasync"]=1
C["fsync"]=1
C["msgrcv"]=1
C["msgsnd"]=1
diff --git a/nptl/tst-cancel4.c b/nptl/tst-cancel4.c
index 45df6ce076..73cfa44614 100644
--- a/nptl/tst-cancel4.c
+++ b/nptl/tst-cancel4.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -1571,47 +1571,6 @@ tf_fsync (void *arg)
static void *
-tf_fdatasync (void *arg)
-{
- if (arg == NULL)
- // XXX If somebody can provide a portable test case in which fdatasync()
- // blocks we can enable this test to run in both rounds.
- abort ();
-
- tempfd = open ("Makefile", O_RDONLY);
- if (tempfd == -1)
- {
- printf ("%s: cannot open Makefile\n", __FUNCTION__);
- exit (1);
- }
-
- int r = pthread_barrier_wait (&b2);
- if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD)
- {
- printf ("%s: barrier_wait failed\n", __FUNCTION__);
- exit (1);
- }
-
- r = pthread_barrier_wait (&b2);
- if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD)
- {
- printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__);
- exit (1);
- }
-
- pthread_cleanup_push (cl, NULL);
-
- fdatasync (tempfd);
-
- pthread_cleanup_pop (0);
-
- printf ("%s: fdatasync returned\n", __FUNCTION__);
-
- exit (1);
-}
-
-
-static void *
tf_msync (void *arg)
{
if (arg == NULL)
@@ -2119,7 +2078,6 @@ static struct
ADD_TEST (pread, 2, 1),
ADD_TEST (pwrite, 2, 1),
ADD_TEST (fsync, 2, 1),
- ADD_TEST (fdatasync, 2, 1),
ADD_TEST (msync, 2, 1),
ADD_TEST (sendto, 2, 1),
ADD_TEST (sendmsg, 2, 1),
diff --git a/nptl/tst-robust9.c b/nptl/tst-robust9.c
deleted file mode 100644
index 1d6ba179be..0000000000
--- a/nptl/tst-robust9.c
+++ /dev/null
@@ -1,94 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <sys/time.h>
-
-
-static pthread_mutex_t m;
-
-static void *
-tf (void *data)
-{
- int err = pthread_mutex_lock (&m);
- if (err == EOWNERDEAD)
- {
- err = pthread_mutex_consistent_np (&m);
- if (err)
- {
- puts ("pthread_mutex_consistent_np");
- exit (1);
- }
- }
- else if (err)
- {
- puts ("pthread_mutex_lock");
- exit (1);
- }
- printf ("thread%ld got the lock.\n", (long int) data);
- sleep (1);
- /* exit without unlock */
- return NULL;
-}
-
-static int
-do_test (void)
-{
- int err, i;
- pthread_t t[3];
- pthread_mutexattr_t ma;
-
- pthread_mutexattr_init (&ma);
- err = pthread_mutexattr_setrobust_np (&ma, PTHREAD_MUTEX_ROBUST_NP);
- if (err)
- {
- puts ("pthread_mutexattr_setrobust_np");
- return 1;
- }
-#ifdef ENABLE_PI
- if (pthread_mutexattr_setprotocol (&ma, PTHREAD_PRIO_INHERIT) != 0)
- {
- puts ("pthread_mutexattr_setprotocol failed");
- return 1;
- }
-#endif
- err = pthread_mutex_init (&m, &ma);
-#ifdef ENABLE_PI
- if (err == ENOTSUP)
- {
- puts ("PI robust mutexes not supported");
- return 0;
- }
-#endif
- if (err)
- {
- puts ("pthread_mutex_init");
- return 1;
- }
-
- for (i = 0; i < sizeof (t) / sizeof (t[0]); i++)
- {
- err = pthread_create (&t[i], NULL, tf, (void *) (long int) i);
- if (err)
- {
- puts ("pthread_create");
- return 1;
- }
- }
-
- for (i = 0; i < sizeof (t) / sizeof (t[0]); i++)
- {
- err = pthread_join (t[i], NULL);
- if (err)
- {
- puts ("pthread_join");
- return 1;
- }
- }
- return 0;
-}
-
-#define TIMEOUT 5
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/nptl/tst-robustpi9.c b/nptl/tst-robustpi9.c
deleted file mode 100644
index d059aa7d88..0000000000
--- a/nptl/tst-robustpi9.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define ENABLE_PI 1
-#include "tst-robust9.c"
diff --git a/nptl/tst-sem10.c b/nptl/tst-sem10.c
deleted file mode 100644
index 9f6e870a85..0000000000
--- a/nptl/tst-sem10.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Copyright (C) 2007 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com>, 2007.
-
- 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. */
-
-#include <errno.h>
-#include <pthread.h>
-#include <semaphore.h>
-#include <stdio.h>
-#include <time.h>
-#include <unistd.h>
-#include <sys/time.h>
-
-
-static int
-do_test (void)
-{
- sem_t s;
- if (sem_init (&s, 0, 0) == -1)
- {
- puts ("sem_init failed");
- return 1;
- }
-
- struct timeval tv;
- if (gettimeofday (&tv, NULL) != 0)
- {
- puts ("gettimeofday failed");
- return 1;
- }
-
- struct timespec ts;
- TIMEVAL_TO_TIMESPEC (&tv, &ts);
-
- /* Set ts to yesterday. */
- ts.tv_sec -= 86400;
-
- int type_before;
- if (pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, &type_before) != 0)
- {
- puts ("first pthread_setcanceltype failed");
- return 1;
- }
-
- errno = 0;
- if (TEMP_FAILURE_RETRY (sem_timedwait (&s, &ts)) != -1)
- {
- puts ("sem_timedwait succeeded");
- return 1;
- }
- if (errno != ETIMEDOUT)
- {
- printf ("sem_timedwait return errno = %d instead of ETIMEDOUT\n",
- errno);
- return 1;
- }
-
- int type_after;
- if (pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, &type_after) != 0)
- {
- puts ("second pthread_setcanceltype failed");
- return 1;
- }
- if (type_after != PTHREAD_CANCEL_DEFERRED)
- {
- puts ("sem_timedwait changed cancellation type");
- return 1;
- }
-
- return 0;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/nptl/tst-tls5.h b/nptl/tst-tls5.h
index b7c14eb82c..9a76ab7827 100644
--- a/nptl/tst-tls5.h
+++ b/nptl/tst-tls5.h
@@ -2,7 +2,7 @@
#include <stdlib.h>
#include <tls.h>
-#if USE_TLS && HAVE___THREAD
+#if HAVE___THREAD
struct tls_obj
{