diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | Makeconfig | 3 | ||||
-rw-r--r-- | linuxthreads/ChangeLog | 8 | ||||
-rw-r--r-- | linuxthreads/rwlock.c | 6 |
4 files changed, 16 insertions, 4 deletions
@@ -1,5 +1,8 @@ 2000-01-16 Ulrich Drepper <drepper@cygnus.com> + * Makeconfig (rpath-dirs): Remove db2. + (dbojdir): Remove variable. + * locale/programs/locfile.h (handle_copy): Take repertoire map name as parameter, not pointer to repertoire structure. * locale/programs/ld-address.c: Change caller. diff --git a/Makeconfig b/Makeconfig index 47d3f3f30a..64f2104528 100644 --- a/Makeconfig +++ b/Makeconfig @@ -414,11 +414,10 @@ link-libc = -Wl,-rpath-link=$(rpath-link) \ $(common-objpfx)libc.so$(libc.so-version) \ $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) # This is how to find at build-time things that will be installed there. -rpath-dirs = math elf dlfcn nss nis db2 rt resolv +rpath-dirs = math elf dlfcn nss nis rt resolv rpath-link = \ $(common-objdir):$(subst $(empty) ,:,$(patsubst ../$(subdir),.,$(rpath-dirs:%=$(common-objpfx)%))) elfobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)elf) -dbobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)db2) else nssobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)nss) resolvobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)resolv) diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index c783b3bf0a..754534e38e 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,3 +1,11 @@ +2000-01-16 Ulrich Drepper <drepper@cygnus.com> + + * rwlock.c (pthread_rwlock_unlock): Correct one more problem with + preference handling. + (pthread_rwlockattr_setkind_np): Allow + PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP. + Patches by Kaz Kylheku <kaz@ashi.footprints.net>. + 2000-01-12 Ulrich Drepper <drepper@cygnus.com> * internals.h (pthread_readlock_info): New structure. diff --git a/linuxthreads/rwlock.c b/linuxthreads/rwlock.c index 7b472e284c..e1401c3c0c 100644 --- a/linuxthreads/rwlock.c +++ b/linuxthreads/rwlock.c @@ -362,8 +362,9 @@ pthread_rwlock_unlock (pthread_rwlock_t *rwlock) } rwlock->__rw_writer = NULL; - if (rwlock->__rw_kind == PTHREAD_RWLOCK_PREFER_READER_NP - || (th = dequeue (&rwlock->__rw_write_waiting)) == NULL) + if ((rwlock->__rw_kind == PTHREAD_RWLOCK_PREFER_READER_NP + && !queue_is_empty(&rwlock->__rw_read_waiting)) + || (th = dequeue(&rwlock->__rw_write_waiting)) == NULL) { /* Restart all waiting readers. */ torestart = rwlock->__rw_read_waiting; @@ -477,6 +478,7 @@ pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *attr, int pref) { if (pref != PTHREAD_RWLOCK_PREFER_READER_NP && pref != PTHREAD_RWLOCK_PREFER_WRITER_NP + && pref != PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP && pref != PTHREAD_RWLOCK_DEFAULT_NP) return EINVAL; |