diff options
author | Bruno Haible <bruno@clisp.org> | 2019-12-21 06:29:11 +0100 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2019-12-21 06:29:11 +0100 |
commit | 49a0828d63ac2bccaaeb6d70c03d32f1d122f876 (patch) | |
tree | eb9d9d98cc1ce0e66548d4069f4b8dd8425d1226 /lib/glthread/lock.h | |
parent | 80d13fd5bdb77eaa8059bae4504da46aba9c693c (diff) | |
download | gnulib-49a0828d63ac2bccaaeb6d70c03d32f1d122f876.tar.gz |
pthread-thread, lock: On z/OS, use PTHREAD_RWLOCK_INITIALIZER_NP.
Reported by Daniel Richard G. in
<https://lists.gnu.org/archive/html/bug-gnulib/2019-11/msg00001.html>
<https://lists.gnu.org/archive/html/bug-gnulib/2019-12/msg00167.html>
* lib/pthread.in.h (PTHREAD_RWLOCK_INITIALIZER): Define to
PTHREAD_RWLOCK_INITIALIZER_NP when possible.
* lib/glthread/lock.h: Allow PTHREAD_RWLOCK_INITIALIZER_NP as an
alternative to PTHREAD_RWLOCK_INITIALIZER.
* lib/glthread/lock.c: Likewise.
Diffstat (limited to 'lib/glthread/lock.h')
-rw-r--r-- | lib/glthread/lock.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/glthread/lock.h b/lib/glthread/lock.h index ffbec15143..890c4595f3 100644 --- a/lib/glthread/lock.h +++ b/lib/glthread/lock.h @@ -308,7 +308,7 @@ typedef pthread_mutex_t gl_lock_t; # if HAVE_PTHREAD_RWLOCK && (HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER || (defined PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP && (__GNU_LIBRARY__ > 1))) -# ifdef PTHREAD_RWLOCK_INITIALIZER +# if defined PTHREAD_RWLOCK_INITIALIZER || defined PTHREAD_RWLOCK_INITIALIZER_NP typedef pthread_rwlock_t gl_rwlock_t; # define gl_rwlock_define(STORAGECLASS, NAME) \ @@ -316,8 +316,13 @@ typedef pthread_rwlock_t gl_rwlock_t; # define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ STORAGECLASS pthread_rwlock_t NAME = gl_rwlock_initializer; # if HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER -# define gl_rwlock_initializer \ - PTHREAD_RWLOCK_INITIALIZER +# if defined PTHREAD_RWLOCK_INITIALIZER +# define gl_rwlock_initializer \ + PTHREAD_RWLOCK_INITIALIZER +# else +# define gl_rwlock_initializer \ + PTHREAD_RWLOCK_INITIALIZER_NP +# endif # define glthread_rwlock_init(LOCK) \ (pthread_in_use () ? pthread_rwlock_init (LOCK, NULL) : 0) # else /* glibc with bug https://sourceware.org/bugzilla/show_bug.cgi?id=13701 */ |