pt-testcancel \
pt-cancel \
pt-mutex-destroy \
- pt-mutex-lock \
- pt-mutex-trylock \
- pt-mutex-timedlock \
- pt-mutex-unlock \
pt-mutex-transfer-np \
pt-mutex-getprioceiling \
pt-mutex-setprioceiling \
pt-getschedparam \
pt-mutex-checklocked \
pt-mutex-init \
+ pt-mutex-lock \
+ pt-mutex-timedlock \
+ pt-mutex-trylock \
+ pt-mutex-unlock \
pt-mutexattr-destroy \
pt-mutexattr-getprioceiling \
pt-mutexattr-getprotocol \
pthread_condattr_setclock;
pthread_condattr_setpshared;
pthread_mutex_init;
+ pthread_mutex_lock;
+ pthread_mutex_timedlock;
+ pthread_mutex_trylock;
+ pthread_mutex_unlock;
pthread_mutexattr_destroy;
pthread_mutexattr_getprioceiling;
pthread_mutexattr_getprotocol;
pthread_equal;
pthread_exit; pthread_getschedparam; pthread_setschedparam;
pthread_mutex_destroy; pthread_mutex_init;
- pthread_mutex_lock; pthread_mutex_trylock; pthread_mutex_unlock;
+ pthread_mutex_lock; pthread_mutex_unlock;
pthread_self; pthread_setcancelstate; pthread_setcanceltype;
__pthread_get_cleanup_stack;
}
pthread_cond_clockwait;
+ pthread_mutex_clocklock;
+
pthread_mutexattr_getrobust; pthread_mutexattr_getrobust_np;
pthread_mutexattr_setrobust; pthread_mutexattr_setrobust_np;
}
pthread_sigmask;
}
+ GLIBC_2.42 {
+ pthread_mutex_trylock;
+ }
GLIBC_PRIVATE {
__libc_alloca_cutoff;
__pthread_default_condattr;
__pthread_mutex_checklocked;
__pthread_mutex_init;
+ __pthread_mutex_lock;
+ __pthread_mutex_timedlock;
+ __pthread_mutex_trylock;
+ __pthread_mutex_unlock;
__pthread_mutexattr_destroy;
__pthread_mutexattr_init;
__pthread_mutexattr_settype;
__pthread_kill;
pthread_mutex_destroy; pthread_mutex_getprioceiling;
- pthread_mutex_lock; pthread_mutex_setprioceiling;
- pthread_mutex_timedlock; pthread_mutex_transfer_np;
- pthread_mutex_trylock; pthread_mutex_unlock;
+ pthread_mutex_setprioceiling;
+ pthread_mutex_transfer_np;
pthread_once;
tss_create; tss_delete; tss_get; tss_set;
pthread_mutex_consistent; pthread_mutex_consistent_np;
- pthread_mutex_clocklock;
pthread_rwlock_clockrdlock; pthread_rwlock_clockwrlock;
__pthread_setspecific;
__pthread_getattr_np;
__pthread_mutex_destroy;
- __pthread_mutex_timedlock;
__pthread_enable_asynccancel;
__pthread_disable_asynccancel;
-
- __pthread_mutex_lock; __pthread_mutex_trylock; __pthread_mutex_unlock;
- _pthread_mutex_lock; _pthread_mutex_trylock; _pthread_mutex_unlock;
_pthread_rwlock_destroy; _pthread_rwlock_init;
}
}
FORWARD (pthread_mutex_destroy, (pthread_mutex_t *mutex), (mutex), 0)
-FORWARD (pthread_mutex_lock, (pthread_mutex_t *mutex), (mutex), 0)
-
-FORWARD (pthread_mutex_unlock, (pthread_mutex_t *mutex), (mutex), 0)
-
FORWARD (__pthread_setcancelstate, (int state, int *oldstate),
(state, oldstate), 0)
strong_alias (__pthread_setcancelstate, pthread_setcancelstate);
static const struct pthread_functions pthread_functions = {
.ptr___pthread_exit = __pthread_exit,
.ptr_pthread_mutex_destroy = __pthread_mutex_destroy,
- .ptr_pthread_mutex_lock = __pthread_mutex_lock,
- .ptr_pthread_mutex_trylock = __pthread_mutex_trylock,
- .ptr_pthread_mutex_unlock = __pthread_mutex_unlock,
.ptr___pthread_setcancelstate = __pthread_setcancelstate,
.ptr_pthread_setcanceltype = __pthread_setcanceltype,
.ptr___pthread_get_cleanup_stack = __pthread_get_cleanup_stack,
return ETIMEDOUT;
}
}
+libc_hidden_def (__lll_abstimed_lock)
/* Robust locks. */
}
}
}
+libc_hidden_def (__lll_robust_lock)
int
__lll_robust_abstimed_lock (void *ptr,
}
}
}
+libc_hidden_def (__lll_robust_abstimed_lock)
int
__lll_robust_trylock (void *ptr)
return EBUSY;
}
+libc_hidden_def (__lll_robust_trylock)
void
__lll_robust_unlock (void *ptr, int flags)
break;
}
}
+
+libc_hidden_def (__lll_robust_unlock)
using clock CLK. */
extern int __lll_abstimed_lock (void *__ptr,
const struct timespec *__tsp, int __flags, int __clk);
+libc_hidden_proto (__lll_abstimed_lock)
/* Acquire the lock at PTR, but return with an error if
the process containing the owner thread dies. */
extern int __lll_robust_lock (void *__ptr, int __flags);
#define lll_robust_lock(var, flags) \
__lll_robust_lock (&(var), flags)
+libc_hidden_proto (__lll_robust_lock)
/* Same as '__lll_robust_lock', but only block until TSP
elapses, using clock CLK. */
extern int __lll_robust_abstimed_lock (void *__ptr,
const struct timespec *__tsp, int __flags, int __clk);
+libc_hidden_proto (__lll_robust_abstimed_lock)
/* Same as '__lll_robust_lock', but return with an error
if the lock cannot be acquired without blocking. */
extern int __lll_robust_trylock (void *__ptr);
#define lll_robust_trylock(var) \
__lll_robust_trylock (&(var))
+libc_hidden_proto (__lll_robust_trylock)
/* Wake one or more threads waiting on address PTR,
setting its value to VAL before doing so. */
extern void __lll_robust_unlock (void *__ptr, int __flags);
#define lll_robust_unlock(var, flags) \
__lll_robust_unlock (&(var), flags)
+libc_hidden_proto (__lll_robust_unlock)
/* Rearrange threads waiting on address SRC to instead wait on
DST, waking one of them if WAIT_ONE is non-zero. */
#if !defined(__NO_WEAK_PTHREAD_ALIASES) && !IS_IN (libpthread)
# ifdef weak_extern
weak_extern (__pthread_mutex_destroy)
-weak_extern (__pthread_mutex_lock)
-weak_extern (__pthread_mutex_trylock)
-weak_extern (__pthread_mutex_unlock)
weak_extern (__pthread_rwlock_init)
weak_extern (__pthread_rwlock_destroy)
weak_extern (__pthread_rwlock_rdlock)
weak_extern (__pthread_setcancelstate)
# else
# pragma weak __pthread_mutex_destroy
-# pragma weak __pthread_mutex_lock
-# pragma weak __pthread_mutex_trylock
-# pragma weak __pthread_mutex_unlock
# pragma weak __pthread_rwlock_destroy
# pragma weak __pthread_rwlock_rdlock
# pragma weak __pthread_rwlock_tryrdlock
void __pthread_exit (void *) __attribute__ ((__noreturn__));
int _pthread_mutex_destroy (pthread_mutex_t *);
-int __pthread_mutex_lock (pthread_mutex_t *);
-int __pthread_mutex_trylock (pthread_mutex_t *);
-int __pthread_mutex_unlock (pthread_mutex_t *);
int __pthread_setcancelstate (int, int *);
int __pthread_setcanceltype (int, int *);
struct __pthread_cancelation_handler **__pthread_get_cleanup_stack (void);
{
void (*ptr___pthread_exit) (void *) __attribute__ ((__noreturn__));
int (*ptr_pthread_mutex_destroy) (pthread_mutex_t *);
- int (*ptr_pthread_mutex_lock) (pthread_mutex_t *);
- int (*ptr_pthread_mutex_trylock) (pthread_mutex_t *);
- int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
int (*ptr___pthread_setcancelstate) (int, int *);
int (*ptr_pthread_setcanceltype) (int, int *);
struct __pthread_cancelation_handler **(*ptr___pthread_get_cleanup_stack) (void);
extern int __pthread_mutex_init (pthread_mutex_t *__mutex, const pthread_mutexattr_t *__attr);
libc_hidden_proto (__pthread_mutex_init)
+extern int __pthread_mutex_clocklock (pthread_mutex_t *__mutex, clockid_t __clockid,
+ const struct timespec *__abstime);
+libc_hidden_proto (__pthread_mutex_clocklock)
extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
extern int __pthread_mutex_lock (pthread_mutex_t *__mutex);
+libc_hidden_proto (__pthread_mutex_lock)
extern int __pthread_mutex_trylock (pthread_mutex_t *_mutex);
+libc_hidden_proto (__pthread_mutex_trylock)
extern int __pthread_mutex_timedlock (pthread_mutex_t *__mutex,
const struct timespec *__abstime);
+libc_hidden_proto (__pthread_mutex_timedlock)
extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex);
+libc_hidden_proto (__pthread_mutex_unlock)
extern int __pthread_mutexattr_getpshared(const pthread_mutexattr_t *__restrict __attr,
int *__restrict __pshared);
libc_hidden_proto (__pthread_mutexattr_getpshared)
hidden_proto (__pthread_getspecific)
hidden_proto (__pthread_setspecific)
hidden_proto (__pthread_mutex_destroy)
-hidden_proto (__pthread_mutex_lock)
-hidden_proto (__pthread_mutex_trylock)
-hidden_proto (__pthread_mutex_unlock)
-hidden_proto (__pthread_mutex_timedlock)
hidden_proto (__pthread_get_cleanup_stack)
#endif
/* How did the signal thread get killed? */
assert (thread != &__timer_signal_thread_rclk);
- pthread_mutex_lock (&__timer_mutex);
+ __pthread_mutex_lock (&__timer_mutex);
thread->exists = 0;
else
(void) __timer_thread_start (thread);
- pthread_mutex_unlock (&__timer_mutex);
+ __pthread_mutex_unlock (&__timer_mutex);
/* Unblock potentially blocked timer_delete(). */
__pthread_cond_broadcast (&thread->cond);
{
self->current_timer = timer; /* Lets timer_delete know timer is running. */
- pthread_mutex_unlock (&__timer_mutex);
+ __pthread_mutex_unlock (&__timer_mutex);
switch (__builtin_expect (timer->event.sigev_notify, SIGEV_SIGNAL))
{
break;
}
- pthread_mutex_lock (&__timer_mutex);
+ __pthread_mutex_lock (&__timer_mutex);
self->current_timer = 0;
pthread_cleanup_push (thread_cleanup, self);
- pthread_mutex_lock (&__timer_mutex);
+ __pthread_mutex_lock (&__timer_mutex);
while (1)
{
void
__timer_mutex_cancel_handler (void *arg)
{
- pthread_mutex_unlock (arg);
+ __pthread_mutex_unlock (arg);
}
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#include <pthread.h>
+#include <pthreadP.h>
#include <stdlib.h>
#include <assert.h>
#include <pt-internal.h>
#include "pt-mutex.h"
#include <hurdlock.h>
#include <unistd.h>
+#include <shlib-compat.h>
int
__pthread_mutex_lock (pthread_mutex_t *mtxp)
return ret;
}
+libc_hidden_def (__pthread_mutex_lock)
+versioned_symbol (libc, __pthread_mutex_lock, pthread_mutex_lock, GLIBC_2_21);
-hidden_def (__pthread_mutex_lock)
-strong_alias (__pthread_mutex_lock, _pthread_mutex_lock)
-weak_alias (__pthread_mutex_lock, pthread_mutex_lock)
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_21)
+compat_symbol (libc, __pthread_mutex_lock, pthread_mutex_lock, GLIBC_2_12);
+#endif
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#include <pthread.h>
+#include <pthreadP.h>
#include <stdlib.h>
#include <assert.h>
#include <pt-internal.h>
return ret;
}
+libc_hidden_def (__pthread_mutex_clocklock)
weak_alias (__pthread_mutex_clocklock, pthread_mutex_clocklock)
int
{
return __pthread_mutex_clocklock (mutex, CLOCK_REALTIME, tsp);
}
+libc_hidden_def (__pthread_mutex_timedlock)
weak_alias (__pthread_mutex_timedlock, pthread_mutex_timedlock)
-hidden_def (__pthread_mutex_timedlock)
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#include <pthread.h>
+#include <pthreadP.h>
#include <stdlib.h>
#include <assert.h>
#include <pt-internal.h>
#include "pt-mutex.h"
#include <hurdlock.h>
#include <unistd.h>
+#include <shlib-compat.h>
int
__pthread_mutex_trylock (pthread_mutex_t *mtxp)
return ret;
}
+libc_hidden_def (__pthread_mutex_trylock)
+versioned_symbol (libc, __pthread_mutex_trylock, pthread_mutex_trylock, GLIBC_2_42);
-hidden_def (__pthread_mutex_trylock)
-strong_alias (__pthread_mutex_trylock, _pthread_mutex_trylock)
-weak_alias (__pthread_mutex_trylock, pthread_mutex_trylock)
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_42)
+compat_symbol (libc, __pthread_mutex_trylock, pthread_mutex_trylock, GLIBC_2_12);
+#endif
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#include <pthread.h>
+#include <pthreadP.h>
#include <stdlib.h>
#include <assert.h>
#include <pt-internal.h>
#include "pt-mutex.h"
#include <hurdlock.h>
#include <unistd.h>
+#include <shlib-compat.h>
int
__pthread_mutex_unlock (pthread_mutex_t *mtxp)
return ret;
}
+libc_hidden_def (__pthread_mutex_unlock)
+versioned_symbol (libc, __pthread_mutex_unlock, pthread_mutex_unlock, GLIBC_2_21);
-hidden_def (__pthread_mutex_unlock)
-strong_alias (__pthread_mutex_unlock, _pthread_mutex_unlock)
-weak_alias (__pthread_mutex_unlock, pthread_mutex_unlock)
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_21)
+compat_symbol (libc, __pthread_mutex_unlock, pthread_mutex_unlock, GLIBC_2_12);
+#endif
GLIBC_2.12 pthread_equal F
GLIBC_2.12 pthread_getschedparam F
GLIBC_2.12 pthread_mutex_init F
+GLIBC_2.12 pthread_mutex_lock F
+GLIBC_2.12 pthread_mutex_timedlock F
+GLIBC_2.12 pthread_mutex_trylock F
+GLIBC_2.12 pthread_mutex_unlock F
GLIBC_2.12 pthread_mutexattr_destroy F
GLIBC_2.12 pthread_mutexattr_getprioceiling F
GLIBC_2.12 pthread_mutexattr_getprotocol F
GLIBC_2.32 mach_print F
GLIBC_2.32 mremap F
GLIBC_2.32 pthread_cond_clockwait F
+GLIBC_2.32 pthread_mutex_clocklock F
GLIBC_2.32 pthread_mutexattr_getrobust F
GLIBC_2.32 pthread_mutexattr_getrobust_np F
GLIBC_2.32 pthread_mutexattr_setrobust F
GLIBC_2.41 pthread_mutexattr_setrobust_np F
GLIBC_2.41 pthread_mutexattr_settype F
GLIBC_2.41 pthread_sigmask F
+GLIBC_2.42 pthread_mutex_trylock F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
GLIBC_2.5 inet6_opt_find F
GLIBC_2.12 pthread_kill F
GLIBC_2.12 pthread_mutex_destroy F
GLIBC_2.12 pthread_mutex_getprioceiling F
-GLIBC_2.12 pthread_mutex_lock F
GLIBC_2.12 pthread_mutex_setprioceiling F
-GLIBC_2.12 pthread_mutex_timedlock F
GLIBC_2.12 pthread_mutex_transfer_np F
-GLIBC_2.12 pthread_mutex_trylock F
-GLIBC_2.12 pthread_mutex_unlock F
GLIBC_2.12 pthread_once F
GLIBC_2.12 pthread_rwlock_destroy F
GLIBC_2.12 pthread_rwlock_init F
GLIBC_2.32 mtx_trylock F
GLIBC_2.32 mtx_unlock F
GLIBC_2.32 pthread_clockjoin_np F
-GLIBC_2.32 pthread_mutex_clocklock F
GLIBC_2.32 pthread_mutex_consistent F
GLIBC_2.32 pthread_mutex_consistent_np F
GLIBC_2.32 pthread_rwlock_clockrdlock F
GLIBC_2.38 pthread_equal F
GLIBC_2.38 pthread_exit F
GLIBC_2.38 pthread_getschedparam F
+GLIBC_2.38 pthread_mutex_clocklock F
GLIBC_2.38 pthread_mutex_destroy F
GLIBC_2.38 pthread_mutex_init F
GLIBC_2.38 pthread_mutex_lock F
+GLIBC_2.38 pthread_mutex_timedlock F
+GLIBC_2.38 pthread_mutex_trylock F
GLIBC_2.38 pthread_mutex_unlock F
GLIBC_2.38 pthread_mutexattr_destroy F
GLIBC_2.38 pthread_mutexattr_getprioceiling F
GLIBC_2.41 pthread_mutexattr_setrobust_np F
GLIBC_2.41 pthread_mutexattr_settype F
GLIBC_2.41 pthread_sigmask F
+GLIBC_2.42 pthread_mutex_trylock F
HURD_CTHREADS_0.3 __cthread_getspecific F
HURD_CTHREADS_0.3 __cthread_keycreate F
HURD_CTHREADS_0.3 __cthread_setspecific F
GLIBC_2.38 pthread_key_create F
GLIBC_2.38 pthread_key_delete F
GLIBC_2.38 pthread_kill F
-GLIBC_2.38 pthread_mutex_clocklock F
GLIBC_2.38 pthread_mutex_consistent F
GLIBC_2.38 pthread_mutex_consistent_np F
GLIBC_2.38 pthread_mutex_destroy F
GLIBC_2.38 pthread_mutex_getprioceiling F
-GLIBC_2.38 pthread_mutex_lock F
GLIBC_2.38 pthread_mutex_setprioceiling F
-GLIBC_2.38 pthread_mutex_timedlock F
GLIBC_2.38 pthread_mutex_transfer_np F
-GLIBC_2.38 pthread_mutex_trylock F
-GLIBC_2.38 pthread_mutex_unlock F
GLIBC_2.38 pthread_once F
GLIBC_2.38 pthread_rwlock_clockrdlock F
GLIBC_2.38 pthread_rwlock_clockwrlock F