diff --git a/htl/Makefile b/htl/Makefile index 651af8d82a..0c85ab462c 100644 --- a/htl/Makefile +++ b/htl/Makefile @@ -48,8 +48,6 @@ libpthread-routines := \ pt-rwlock-init \ pt-rwlock-destroy \ pt-rwlock-rdlock \ - pt-rwlock-tryrdlock \ - pt-rwlock-trywrlock \ pt-rwlock-wrlock \ pt-rwlock-timedrdlock \ pt-rwlock-timedwrlock \ @@ -197,6 +195,8 @@ routines := \ pt-nthreads \ pt-pthread_self \ pt-rwlock-attr \ + pt-rwlock-tryrdlock \ + pt-rwlock-trywrlock \ pt-rwlockattr-destroy \ pt-rwlockattr-getpshared \ pt-rwlockattr-init \ diff --git a/htl/Versions b/htl/Versions index 1d666bcb3c..ca59cd5c99 100644 --- a/htl/Versions +++ b/htl/Versions @@ -63,6 +63,8 @@ libc { pthread_mutexattr_setprotocol; pthread_mutexattr_setpshared; pthread_mutexattr_settype; + pthread_rwlock_tryrdlock; + pthread_rwlock_trywrlock; pthread_rwlockattr_destroy; pthread_rwlockattr_getpshared; pthread_rwlockattr_init; @@ -146,6 +148,8 @@ libc { pthread_mutex_getprioceiling; pthread_mutex_setprioceiling; pthread_mutex_trylock; + pthread_rwlock_tryrdlock; + pthread_rwlock_trywrlock; pthread_rwlockattr_destroy; pthread_rwlockattr_getpshared; pthread_rwlockattr_init; @@ -247,7 +251,6 @@ libpthread { pthread_rwlock_destroy; pthread_rwlock_init; pthread_rwlock_rdlock; pthread_rwlock_timedrdlock; pthread_rwlock_timedwrlock; - pthread_rwlock_tryrdlock; pthread_rwlock_trywrlock; pthread_rwlock_unlock; pthread_rwlock_wrlock; pthread_setconcurrency; diff --git a/sysdeps/htl/libc-lockP.h b/sysdeps/htl/libc-lockP.h index 6804c0d636..5fad451dfc 100644 --- a/sysdeps/htl/libc-lockP.h +++ b/sysdeps/htl/libc-lockP.h @@ -98,10 +98,12 @@ extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock); extern int __pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock); extern int __pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock); +libc_hidden_proto (__pthread_rwlock_tryrdlock) extern int __pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock); extern int __pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock); +libc_hidden_proto (__pthread_rwlock_trywrlock) extern int __pthread_rwlock_unlock (pthread_rwlock_t *__rwlock); @@ -121,9 +123,7 @@ libc_hidden_proto (__pthread_setcancelstate) weak_extern (__pthread_rwlock_init) weak_extern (__pthread_rwlock_destroy) weak_extern (__pthread_rwlock_rdlock) -weak_extern (__pthread_rwlock_tryrdlock) weak_extern (__pthread_rwlock_wrlock) -weak_extern (__pthread_rwlock_trywrlock) weak_extern (__pthread_rwlock_unlock) weak_extern (__pthread_key_create) weak_extern (__pthread_setspecific) @@ -134,9 +134,7 @@ weak_extern (__pthread_atfork) # else # pragma weak __pthread_rwlock_destroy # pragma weak __pthread_rwlock_rdlock -# pragma weak __pthread_rwlock_tryrdlock # pragma weak __pthread_rwlock_wrlock -# pragma weak __pthread_rwlock_trywrlock # pragma weak __pthread_rwlock_unlock # pragma weak __pthread_key_create # pragma weak __pthread_setspecific diff --git a/sysdeps/htl/pt-rwlock-tryrdlock.c b/sysdeps/htl/pt-rwlock-tryrdlock.c index c34ffccbc4..74aa636f93 100644 --- a/sysdeps/htl/pt-rwlock-tryrdlock.c +++ b/sysdeps/htl/pt-rwlock-tryrdlock.c @@ -18,12 +18,12 @@ #include #include - #include +#include /* Try to acquire RWLOCK. */ int -pthread_rwlock_tryrdlock (struct __pthread_rwlock *rwlock) +__pthread_rwlock_tryrdlock (struct __pthread_rwlock *rwlock) { __pthread_spin_wait (&rwlock->__lock); if (__pthread_spin_trylock (&rwlock->__held) == 0) @@ -53,3 +53,9 @@ pthread_rwlock_tryrdlock (struct __pthread_rwlock *rwlock) return EBUSY; } +libc_hidden_def (__pthread_rwlock_tryrdlock) +versioned_symbol (libc, __pthread_rwlock_tryrdlock, pthread_rwlock_tryrdlock, GLIBC_2_42); + +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_42) +compat_symbol (libpthread, __pthread_rwlock_tryrdlock, pthread_rwlock_tryrdlock, GLIBC_2_12); +#endif diff --git a/sysdeps/htl/pt-rwlock-trywrlock.c b/sysdeps/htl/pt-rwlock-trywrlock.c index 926637a3ff..8de0e59132 100644 --- a/sysdeps/htl/pt-rwlock-trywrlock.c +++ b/sysdeps/htl/pt-rwlock-trywrlock.c @@ -18,12 +18,12 @@ #include #include - #include +#include /* Try to acquire RWLOCK for writing. */ int -pthread_rwlock_trywrlock (struct __pthread_rwlock *rwlock) +__pthread_rwlock_trywrlock (struct __pthread_rwlock *rwlock) { __pthread_spin_wait (&rwlock->__lock); if (__pthread_spin_trylock (&rwlock->__held) == 0) @@ -43,3 +43,9 @@ pthread_rwlock_trywrlock (struct __pthread_rwlock *rwlock) return EBUSY; } +libc_hidden_def (__pthread_rwlock_trywrlock) +versioned_symbol (libc, __pthread_rwlock_trywrlock, pthread_rwlock_trywrlock, GLIBC_2_42); + +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_42) +compat_symbol (libpthread, __pthread_rwlock_trywrlock, pthread_rwlock_trywrlock, GLIBC_2_12); +#endif diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist index 55ad6b423f..3d786282fa 100644 --- a/sysdeps/mach/hurd/i386/libc.abilist +++ b/sysdeps/mach/hurd/i386/libc.abilist @@ -88,6 +88,8 @@ GLIBC_2.12 pthread_mutexattr_setprioceiling F GLIBC_2.12 pthread_mutexattr_setprotocol F GLIBC_2.12 pthread_mutexattr_setpshared F GLIBC_2.12 pthread_mutexattr_settype F +GLIBC_2.12 pthread_rwlock_tryrdlock F +GLIBC_2.12 pthread_rwlock_trywrlock F GLIBC_2.12 pthread_rwlockattr_destroy F GLIBC_2.12 pthread_rwlockattr_getpshared F GLIBC_2.12 pthread_rwlockattr_init F @@ -2584,6 +2586,8 @@ GLIBC_2.42 pthread_mutex_consistent_np F GLIBC_2.42 pthread_mutex_getprioceiling F GLIBC_2.42 pthread_mutex_setprioceiling F GLIBC_2.42 pthread_mutex_trylock F +GLIBC_2.42 pthread_rwlock_tryrdlock F +GLIBC_2.42 pthread_rwlock_trywrlock F GLIBC_2.42 pthread_rwlockattr_destroy F GLIBC_2.42 pthread_rwlockattr_getpshared F GLIBC_2.42 pthread_rwlockattr_init F diff --git a/sysdeps/mach/hurd/i386/libpthread.abilist b/sysdeps/mach/hurd/i386/libpthread.abilist index df7c46455a..70db951b10 100644 --- a/sysdeps/mach/hurd/i386/libpthread.abilist +++ b/sysdeps/mach/hurd/i386/libpthread.abilist @@ -41,8 +41,6 @@ GLIBC_2.12 pthread_rwlock_init F GLIBC_2.12 pthread_rwlock_rdlock F GLIBC_2.12 pthread_rwlock_timedrdlock F GLIBC_2.12 pthread_rwlock_timedwrlock F -GLIBC_2.12 pthread_rwlock_tryrdlock F -GLIBC_2.12 pthread_rwlock_trywrlock F GLIBC_2.12 pthread_rwlock_unlock F GLIBC_2.12 pthread_rwlock_wrlock F GLIBC_2.12 pthread_setconcurrency F diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist index 3075e10305..305cdb8cef 100644 --- a/sysdeps/mach/hurd/x86_64/libc.abilist +++ b/sysdeps/mach/hurd/x86_64/libc.abilist @@ -1579,6 +1579,8 @@ GLIBC_2.38 pthread_mutexattr_setpshared F GLIBC_2.38 pthread_mutexattr_setrobust F GLIBC_2.38 pthread_mutexattr_setrobust_np F GLIBC_2.38 pthread_mutexattr_settype F +GLIBC_2.38 pthread_rwlock_tryrdlock F +GLIBC_2.38 pthread_rwlock_trywrlock F GLIBC_2.38 pthread_rwlockattr_destroy F GLIBC_2.38 pthread_rwlockattr_getpshared F GLIBC_2.38 pthread_rwlockattr_init F @@ -2267,6 +2269,8 @@ GLIBC_2.42 pthread_mutex_consistent_np F GLIBC_2.42 pthread_mutex_getprioceiling F GLIBC_2.42 pthread_mutex_setprioceiling F GLIBC_2.42 pthread_mutex_trylock F +GLIBC_2.42 pthread_rwlock_tryrdlock F +GLIBC_2.42 pthread_rwlock_trywrlock F GLIBC_2.42 pthread_rwlockattr_destroy F GLIBC_2.42 pthread_rwlockattr_getpshared F GLIBC_2.42 pthread_rwlockattr_init F diff --git a/sysdeps/mach/hurd/x86_64/libpthread.abilist b/sysdeps/mach/hurd/x86_64/libpthread.abilist index 89fe63f256..b712a1b3bf 100644 --- a/sysdeps/mach/hurd/x86_64/libpthread.abilist +++ b/sysdeps/mach/hurd/x86_64/libpthread.abilist @@ -63,8 +63,6 @@ GLIBC_2.38 pthread_rwlock_init F GLIBC_2.38 pthread_rwlock_rdlock F GLIBC_2.38 pthread_rwlock_timedrdlock F GLIBC_2.38 pthread_rwlock_timedwrlock F -GLIBC_2.38 pthread_rwlock_tryrdlock F -GLIBC_2.38 pthread_rwlock_trywrlock F GLIBC_2.38 pthread_rwlock_unlock F GLIBC_2.38 pthread_rwlock_wrlock F GLIBC_2.38 pthread_setconcurrency F