aboutsummaryrefslogtreecommitdiff
path: root/nptl
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2007-05-26 20:13:27 +0000
committerUlrich Drepper <drepper@redhat.com>2007-05-26 20:13:27 +0000
commit6df7ffad195864a5c28d9d24093866e919ef0494 (patch)
tree02d6096090d896d537fc60d5047af0da0bc0772b /nptl
parentd8ff3792a8020ff25b703109a763161236cfa8dd (diff)
downloadglibc-6df7ffad195864a5c28d9d24093866e919ef0494.tar
glibc-6df7ffad195864a5c28d9d24093866e919ef0494.tar.gz
glibc-6df7ffad195864a5c28d9d24093866e919ef0494.tar.bz2
glibc-6df7ffad195864a5c28d9d24093866e919ef0494.zip
* sysdeps/unix/sysv/linux/powerpc/libc-start.c: Include <sysdep.h>.
Diffstat (limited to 'nptl')
-rw-r--r--nptl/ChangeLog12
-rw-r--r--nptl/allocatestack.c5
-rw-r--r--nptl/descr.h4
-rw-r--r--nptl/init.c2
-rw-r--r--nptl/sysdeps/i386/tls.h10
-rw-r--r--nptl/sysdeps/powerpc/tcb-offsets.sym1
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sem_timedwait.c10
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sem_wait.c1
-rw-r--r--nptl/sysdeps/x86_64/tls.h8
9 files changed, 22 insertions, 31 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 02a83c81bb..0cd8193452 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,5 +1,17 @@
2007-05-26 Ulrich Drepper <drepper@redhat.com>
+ * sysdeps/unix/sysv/linux/sem_wait.c: Add missing break.
+ * sysdeps/unix/sysv/linux/sem_timedwait.c: Removed left-over
+ duplication of __sem_wait_cleanup.
+
+ * allocatestack.c: Revert last change.
+ * init.c: Likewise.
+ * sysdeps/i386/tls.h: Likewise.
+ * sysdeps/x86_64/tls.h: Likewise.
+ * descr.h [TLS_DTV_AT_TP] (struct pthread): Add private_futex field to
+ header structure.
+ * sysdeps/powerpc/tcb-offsets.sym: Add PRIVATE_FUTEX_OFFSET.
+
* sysdeps/unix/sysv/linux/internaltypes.h (struct pthread_barrier):
Add private field.
* sysdeps/unix/sysv/linux/lowlevelbarrier.sym: Add PRIVATE definition.
diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
index 4ac04dbfa1..aad157a9f9 100644
--- a/nptl/allocatestack.c
+++ b/nptl/allocatestack.c
@@ -376,9 +376,10 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
__pthread_multiple_threads = *__libc_multiple_threads_ptr = 1;
#endif
-#ifdef THREAD_COPY_PRIVATE_FUTEX
+#ifndef __ASSUME_PRIVATE_FUTEX
/* The thread must know when private futexes are supported. */
- THREAD_COPY_PRIVATE_FUTEX (pd);
+ pd->header.private_futex = THREAD_GETMEM (THREAD_SELF,
+ header.private_futex);
#endif
#ifdef NEED_DL_SYSINFO
diff --git a/nptl/descr.h b/nptl/descr.h
index 00cad1aa83..203b62a2bf 100644
--- a/nptl/descr.h
+++ b/nptl/descr.h
@@ -37,6 +37,7 @@
#endif
#define __need_res_state
#include <resolv.h>
+#include <kernel-features.h>
#ifndef TCB_ALIGNMENT
# define TCB_ALIGNMENT sizeof (double)
@@ -131,6 +132,9 @@ struct pthread
struct
{
int multiple_threads;
+# ifndef __ASSUME_PRIVATE_FUTEX
+ int private_futex;
+# endif
} header;
#endif
diff --git a/nptl/init.c b/nptl/init.c
index d7c74d4e1c..212b835a0d 100644
--- a/nptl/init.c
+++ b/nptl/init.c
@@ -284,7 +284,7 @@ __pthread_initialize_minimal_internal (void)
res = INTERNAL_SYSCALL (futex, err, 3, &word,
FUTEX_WAKE | FUTEX_PRIVATE_FLAG, 1);
if (!INTERNAL_SYSCALL_ERROR_P (res, err))
- THREAD_SET_PRIVATE_FUTEX (FUTEX_PRIVATE_FLAG);
+ pd->header.private_futex = FUTEX_PRIVATE_FLAG;
}
#endif
diff --git a/nptl/sysdeps/i386/tls.h b/nptl/sysdeps/i386/tls.h
index 90a8b50dad..64eab45c01 100644
--- a/nptl/sysdeps/i386/tls.h
+++ b/nptl/sysdeps/i386/tls.h
@@ -458,16 +458,6 @@ union user_desc_init
#define THREAD_GSCOPE_WAIT() \
GL(dl_wait_lookup_done) ()
-
-#ifndef __ASSUME_PRIVATE_FUTEX
-# define THREAD_SET_PRIVATE_FUTEX(value) \
- THREAD_SETMEM (THREAD_SELF, header.private_futex, value)
-# define THREAD_COPY_PRIVATE_FUTEX(descr) \
- ((descr)->header.private_futex \
- = THREAD_GETMEM (THREAD_SELF, header.private_futex))
-#endif
-
-
#endif /* __ASSEMBLER__ */
#endif /* tls.h */
diff --git a/nptl/sysdeps/powerpc/tcb-offsets.sym b/nptl/sysdeps/powerpc/tcb-offsets.sym
index 4a8671e802..eda43dce8e 100644
--- a/nptl/sysdeps/powerpc/tcb-offsets.sym
+++ b/nptl/sysdeps/powerpc/tcb-offsets.sym
@@ -15,3 +15,4 @@ MULTIPLE_THREADS_OFFSET thread_offsetof (header.multiple_threads)
PID thread_offsetof (pid)
TID thread_offsetof (tid)
POINTER_GUARD (offsetof (tcbhead_t, pointer_guard) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
+PRIVATE_FUTEX_OFFSET thread_offsetof (header.private_futex)
diff --git a/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c b/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c
index 30f6a87df4..4c8acd0938 100644
--- a/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c
+++ b/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c
@@ -31,16 +31,6 @@
extern void __sem_wait_cleanup (void *arg) attribute_hidden;
-void
-attribute_hidden
-__sem_wait_cleanup (void *arg)
-{
- struct new_sem *isem = (struct new_sem *) arg;
-
- atomic_decrement (&isem->nwaiters);
-}
-
-
int
sem_timedwait (sem_t *sem, const struct timespec *abstime)
{
diff --git a/nptl/sysdeps/unix/sysv/linux/sem_wait.c b/nptl/sysdeps/unix/sysv/linux/sem_wait.c
index e35b6480f2..05114c9704 100644
--- a/nptl/sysdeps/unix/sysv/linux/sem_wait.c
+++ b/nptl/sysdeps/unix/sysv/linux/sem_wait.c
@@ -65,6 +65,7 @@ __new_sem_wait (sem_t *sem)
{
__set_errno (-err);
err = -1;
+ break;
}
if (atomic_decrement_if_positive (&isem->value) > 0)
diff --git a/nptl/sysdeps/x86_64/tls.h b/nptl/sysdeps/x86_64/tls.h
index cb3b474f97..c3afb3f03c 100644
--- a/nptl/sysdeps/x86_64/tls.h
+++ b/nptl/sysdeps/x86_64/tls.h
@@ -364,14 +364,6 @@ typedef struct
#define THREAD_GSCOPE_WAIT() \
GL(dl_wait_lookup_done) ()
-#ifndef __ASSUME_PRIVATE_FUTEX
-# define THREAD_SET_PRIVATE_FUTEX(value) \
- THREAD_SETMEM (THREAD_SELF, header.private_futex, value)
-# define THREAD_COPY_PRIVATE_FUTEX(descr) \
- ((descr)->header.private_futex \
- = THREAD_GETMEM (THREAD_SELF, header.private_futex))
-#endif
-
#endif /* __ASSEMBLER__ */
#endif /* tls.h */