summaryrefslogtreecommitdiff
path: root/libpthread/nptl/pthread_cond_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'libpthread/nptl/pthread_cond_init.c')
-rw-r--r--libpthread/nptl/pthread_cond_init.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/libpthread/nptl/pthread_cond_init.c b/libpthread/nptl/pthread_cond_init.c
index bf2ab31e6..dec644465 100644
--- a/libpthread/nptl/pthread_cond_init.c
+++ b/libpthread/nptl/pthread_cond_init.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -27,11 +28,12 @@ __pthread_cond_init (
{
struct pthread_condattr *icond_attr = (struct pthread_condattr *) cond_attr;
- cond->__data.__lock = LLL_MUTEX_LOCK_INITIALIZER;
+ cond->__data.__lock = LLL_LOCK_INITIALIZER;
cond->__data.__futex = 0;
cond->__data.__nwaiters = (icond_attr != NULL
- && ((icond_attr->value & (COND_CLOCK_BITS << 1))
- >> 1));
+ ? ((icond_attr->value >> 1)
+ & ((1 << COND_NWAITERS_SHIFT) - 1))
+ : CLOCK_REALTIME);
cond->__data.__total_seq = 0;
cond->__data.__wakeup_seq = 0;
cond->__data.__woken_seq = 0;