diff options
Diffstat (limited to 'nptl')
-rw-r--r-- | nptl/DESIGN-rwlock.txt | 1 | ||||
-rw-r--r-- | nptl/sysdeps/pthread/pthread_rwlock_rdlock.c | 4 | ||||
-rw-r--r-- | nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c | 2 |
3 files changed, 6 insertions, 1 deletions
diff --git a/nptl/DESIGN-rwlock.txt b/nptl/DESIGN-rwlock.txt index cdbd4ce..810d1b8 100644 --- a/nptl/DESIGN-rwlock.txt +++ b/nptl/DESIGN-rwlock.txt @@ -48,6 +48,7 @@ pthread_rwlock_rdlock(pthread_rwlock_t *rwlock) futex_wait(&rwlock->readers_wakeup, val) lll_lock(rwlock->lock); + rwlock->nr_readers_queued--; } rwlock->readers++; lll_unlock(rwlock->lock); diff --git a/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c b/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c index f785bb7..e225d70 100644 --- a/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c +++ b/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003. @@ -81,6 +81,8 @@ __pthread_rwlock_rdlock (rwlock) /* Get the lock. */ lll_mutex_lock (rwlock->__data.__lock); + + --rwlock->__data.__nr_readers_queued; } /* We are done, free the lock. */ diff --git a/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c b/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c index 62f3e23..80ea83a 100644 --- a/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c +++ b/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c @@ -119,6 +119,8 @@ pthread_rwlock_timedrdlock (rwlock, abstime) /* Get the lock. */ lll_mutex_lock (rwlock->__data.__lock); + --rwlock->__data.__nr_readers_queued; + /* Did the futex call time out? */ if (err == -ETIMEDOUT) { |