about summary refs log tree commit diff
path: root/rt/lio_listio-common.c
diff options
context:
space:
mode:
Diffstat (limited to 'rt/lio_listio-common.c')
-rw-r--r--rt/lio_listio-common.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/rt/lio_listio-common.c b/rt/lio_listio-common.c
index 3e087aa063..aa4ee5f465 100644
--- a/rt/lio_listio-common.c
+++ b/rt/lio_listio-common.c
@@ -42,6 +42,7 @@
 #include <errno.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <pthreadP.h>
 
 #include <aio_misc.h>
 
@@ -87,7 +88,7 @@ lio_listio_internal (int mode, struct AIOCB *const list[], int nent,
     }
 
   /* Request the mutex.  */
-  pthread_mutex_lock (&__aio_requests_mutex);
+  __pthread_mutex_lock (&__aio_requests_mutex);
 
   /* Now we can enqueue all requests.  Since we already acquired the
      mutex the enqueue function need not do this.  */
@@ -120,7 +121,7 @@ lio_listio_internal (int mode, struct AIOCB *const list[], int nent,
       /* Release the mutex.  We do this before raising a signal since the
 	 signal handler might do a `siglongjmp' and then the mutex is
 	 locked forever.  */
-      pthread_mutex_unlock (&__aio_requests_mutex);
+      __pthread_mutex_unlock (&__aio_requests_mutex);
 
       if (LIO_MODE (mode) == LIO_NOWAIT)
 	__aio_notify_only (sig);
@@ -223,13 +224,13 @@ lio_listio_internal (int mode, struct AIOCB *const list[], int nent,
     }
 
   /* Release the mutex.  */
-  pthread_mutex_unlock (&__aio_requests_mutex);
+  __pthread_mutex_unlock (&__aio_requests_mutex);
 
   return result;
 }
 
 
-#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
+#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_4)
 int
 attribute_compat_text_section
 LIO_LISTIO_OLD (int mode, struct AIOCB *const list[], int nent,
@@ -248,7 +249,7 @@ compat_symbol (librt, LIO_LISTIO_OLD, LIO_LISTIO, GLIBC_2_1);
 # if __WORDSIZE == 64
 compat_symbol (librt, LIO_LISTIO_OLD, lio_listio64, GLIBC_2_1);
 # endif
-#endif /* SHLIB_COMPAT */
+#endif /* OTHER_SHLIB_COMPAT */
 
 
 int
@@ -264,7 +265,21 @@ LIO_LISTIO_NEW (int mode, struct AIOCB *const list[], int nent,
 
   return lio_listio_internal (mode, list, nent, sig);
 }
+
+#if PTHREAD_IN_LIBC
+versioned_symbol (libc, LIO_LISTIO_NEW, LIO_LISTIO, GLIBC_2_34);
+# if __WORDSIZE == 64
+versioned_symbol (libc, LIO_LISTIO_NEW, lio_listio64, GLIBC_2_34);
+# endif
+# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_4, GLIBC_2_34)
+compat_symbol (librt, LIO_LISTIO_NEW, LIO_LISTIO, GLIBC_2_4);
+#  if __WORDSIZE == 64
+compat_symbol (librt, LIO_LISTIO_NEW, lio_listio64, GLIBC_2_4);
+#  endif
+# endif /* OTHER_SHLIB_COMPAT */
+#else /* !PTHREAD_IN_LIBC */
 versioned_symbol (librt, LIO_LISTIO_NEW, LIO_LISTIO, GLIBC_2_4);
-#if __WORDSIZE == 64
+# if __WORDSIZE == 64
 versioned_symbol (librt, LIO_LISTIO_NEW, lio_listio64, GLIBC_2_4);
-#endif
+# endif
+#endif /* !PTHREAD_IN_LIBC */