summaryrefslogtreecommitdiff
path: root/lib/glthread/lock.h
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2019-12-21 06:29:11 +0100
committerBruno Haible <bruno@clisp.org>2019-12-21 06:29:11 +0100
commit49a0828d63ac2bccaaeb6d70c03d32f1d122f876 (patch)
treeeb9d9d98cc1ce0e66548d4069f4b8dd8425d1226 /lib/glthread/lock.h
parent80d13fd5bdb77eaa8059bae4504da46aba9c693c (diff)
downloadgnulib-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.h11
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 */