Like nptl does, so we really get rwlock behavior.
---
 sysdeps/htl/libc-lockP.h | 14 ++++++++++++++
 sysdeps/mach/libc-lock.h | 10 ----------
 2 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/sysdeps/htl/libc-lockP.h b/sysdeps/htl/libc-lockP.h
index a88eea4344..e20e40f254 100644
--- a/sysdeps/htl/libc-lockP.h
+++ b/sysdeps/htl/libc-lockP.h
@@ -21,6 +21,20 @@
 
 #include <pthread.h>
 
+typedef pthread_rwlock_t __libc_rwlock_t;
+
+#define __libc_rwlock_define(CLASS,NAME) \
+  CLASS __libc_rwlock_t NAME;
+#define __libc_rwlock_define_initialized(CLASS,NAME) \
+  CLASS __libc_rwlock_t NAME = PTHREAD_RWLOCK_INITIALIZER;
+#define __libc_rwlock_init(NAME) __pthread_rwlock_init (&(NAME), NULL)
+#define __libc_rwlock_fini(NAME) ((void) 0)
+#define __libc_rwlock_rdlock(NAME) __pthread_rwlock_rdlock (&(NAME))
+#define __libc_rwlock_wrlock(NAME) __pthread_rwlock_wrlock (&(NAME))
+#define __libc_rwlock_tryrdlock(NAME) __pthread_rwlock_tryrdlock (&(NAME))
+#define __libc_rwlock_trywrlock(NAME) __pthread_rwlock_trywrlock (&(NAME))
+#define __libc_rwlock_unlock(NAME) __pthread_rwlock_unlock (&(NAME))
+
 /* If we check for a weakly referenced symbol and then perform a
    normal jump to it te code generated for some platforms in case of
    PIC is unnecessarily slow.  What would happen is that the function
diff --git a/sysdeps/mach/libc-lock.h b/sysdeps/mach/libc-lock.h
index ddeae544f4..c5c67ccf9d 100644
--- a/sysdeps/mach/libc-lock.h
+++ b/sysdeps/mach/libc-lock.h
@@ -156,16 +156,6 @@ typedef struct __libc_lock_recursive_opaque__ 
__libc_lock_recursive_t;
 #define __mach_rwlock_trywrlock                __libc_lock_trylock
 #define __mach_rwlock_unlock           __libc_lock_unlock
 
-#define __libc_rwlock_define           __libc_lock_define
-#define __libc_rwlock_define_initialized __libc_lock_define_initialized
-#define __libc_rwlock_init             __libc_lock_init
-#define __libc_rwlock_fini             __libc_lock_fini
-#define __libc_rwlock_rdlock           __libc_lock_lock
-#define __libc_rwlock_wrlock           __libc_lock_lock
-#define __libc_rwlock_tryrdlock                __libc_lock_trylock
-#define __libc_rwlock_trywrlock                __libc_lock_trylock
-#define __libc_rwlock_unlock           __libc_lock_unlock
-
 struct __libc_cleanup_frame
 {
   void (*__fct) (void *);
-- 
2.51.0


Reply via email to