LCLHDRS :=
-libpthread-routines := \
- pt-spin-inlines \
- pt-spin \
- # libpthread-routine
+libpthread-routines :=
headers := \
bits/cancelation.h \
bits/pthreadtypes-arch.h \
bits/pthreadtypes.h \
bits/semaphore.h \
- bits/spin-lock-inline.h \
bits/thread-shared-types.h \
bits/types/__pthread_key.h \
bits/types/__pthread_spinlock_t.h \
pt-sigstate \
pt-sigstate-destroy \
pt-sigstate-init \
+ pt-spin-inlines \
pt-stack-alloc \
pt-startup \
pt-sysdep \
pthread_setschedprio;
pthread_setspecific;
pthread_sigmask;
+ pthread_spin_destroy;
+ pthread_spin_init;
+ pthread_spin_lock;
+ pthread_spin_trylock;
+ pthread_spin_unlock;
pthread_testcancel;
pthread_yield;
sem_close;
pthread_setconcurrency;
pthread_setname_np;
pthread_setschedprio;
+ pthread_spin_destroy;
+ pthread_spin_init;
+ pthread_spin_lock;
+ pthread_spin_trylock;
+ pthread_spin_unlock;
pthread_testcancel;
pthread_timedjoin_np;
pthread_tryjoin_np;
GLIBC_2.12 {
pthread_atfork;
-
- pthread_spin_destroy; pthread_spin_init; pthread_spin_lock;
- pthread_spin_trylock; pthread_spin_unlock;
- __pthread_spin_destroy; __pthread_spin_init;
- __pthread_spin_lock; __pthread_spin_trylock; __pthread_spin_unlock;
- _pthread_spin_lock;
}
GLIBC_2.21 {
__libpthread_version_placeholder;
#define __PT_SPIN_INLINE /* empty */
#include <pthread.h>
+#include <shlib-compat.h>
-/* Weak aliases for the spin lock functions. */
-weak_alias (__pthread_spin_destroy, pthread_spin_destroy);
-weak_alias (__pthread_spin_init, pthread_spin_init);
-weak_alias (__pthread_spin_trylock, pthread_spin_trylock);
-weak_alias (__pthread_spin_lock, pthread_spin_lock);
-weak_alias (__pthread_spin_unlock, pthread_spin_unlock);
+libc_hidden_def (__pthread_spin_destroy)
+versioned_symbol (libc, __pthread_spin_destroy, pthread_spin_destroy, GLIBC_2_43);
+
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43)
+compat_symbol (libc, __pthread_spin_destroy, pthread_spin_destroy, GLIBC_2_12);
+#endif
+
+libc_hidden_def (__pthread_spin_init)
+versioned_symbol (libc, __pthread_spin_init, pthread_spin_init, GLIBC_2_43);
+
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43)
+compat_symbol (libc, __pthread_spin_init, pthread_spin_init, GLIBC_2_12);
+#endif
+
+libc_hidden_def (__pthread_spin_trylock)
+versioned_symbol (libc, __pthread_spin_trylock, pthread_spin_trylock, GLIBC_2_43);
+
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43)
+compat_symbol (libc, __pthread_spin_trylock, pthread_spin_trylock, GLIBC_2_12);
+#endif
+
+libc_hidden_def (__pthread_spin_lock)
+versioned_symbol (libc, __pthread_spin_lock, pthread_spin_lock, GLIBC_2_43);
+
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43)
+compat_symbol (libc, __pthread_spin_lock, pthread_spin_lock, GLIBC_2_12);
+#endif
+
+libc_hidden_def (__pthread_spin_unlock)
+versioned_symbol (libc, __pthread_spin_unlock, pthread_spin_unlock, GLIBC_2_43);
+
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43)
+compat_symbol (libc, __pthread_spin_unlock, pthread_spin_unlock, GLIBC_2_12);
+#endif
__vm_deallocate; __mach_port_insert_right; __mach_reply_port;
__mig_init; __vm_allocate; __mach_port_allocate;
- # functions used in inline functions or macros
- __pthread_spin_destroy; __pthread_spin_init; __pthread_spin_lock;
- _pthread_spin_lock; __pthread_spin_trylock; __pthread_spin_unlock;
-
# p*
pthread_spin_destroy; pthread_spin_init; pthread_spin_lock;
pthread_spin_trylock; pthread_spin_unlock;
int __pthread_setname_np (pthread_t __target_thread, const char *__name);
libc_hidden_proto (__pthread_setname_np)
+int __pthread_spin_destroy (pthread_spinlock_t *__lock);
+libc_hidden_proto (__pthread_spin_destroy)
+int __pthread_spin_init (pthread_spinlock_t *__lock, int __pshared);
+libc_hidden_proto (__pthread_spin_init)
+int __pthread_spin_lock (pthread_spinlock_t *__lock);
+libc_hidden_proto (__pthread_spin_lock)
+int __pthread_spin_trylock (pthread_spinlock_t *__lock);
+libc_hidden_proto (__pthread_spin_trylock)
+int __pthread_spin_unlock (pthread_spinlock_t *__lock);
+libc_hidden_proto (__pthread_spin_unlock)
+
#define __pthread_raise_internal(__sig) raise (__sig)
libc_hidden_proto (__pthread_self)
<https://www.gnu.org/licenses/>. */
#define HAVE_CMOV 1
-#include <sysdeps/i386/pthread_spin_trylock.S>
+#include <sysdeps/i386/nptl/pthread_spin_trylock.S>
+++ /dev/null
-/* Spin locks. Mach version.
- Copyright (C) 2002-2025 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <machine-lock.h>
-
-/* In glibc. */
-extern void __spin_lock_solid (__spin_lock_t *lock);
-
-/* Lock the spin lock object LOCK. If the lock is held by another
- thread spin until it becomes available. */
-int
-_pthread_spin_lock (__spin_lock_t *lock)
-{
- __spin_lock_solid (lock);
- return 0;
-}
GLIBC_2.12 pthread_setschedprio F
GLIBC_2.12 pthread_setspecific F
GLIBC_2.12 pthread_sigmask F
+GLIBC_2.12 pthread_spin_destroy F
+GLIBC_2.12 pthread_spin_init F
+GLIBC_2.12 pthread_spin_lock F
+GLIBC_2.12 pthread_spin_trylock F
+GLIBC_2.12 pthread_spin_unlock F
GLIBC_2.12 pthread_testcancel F
GLIBC_2.12 pthread_yield F
GLIBC_2.12 sem_close F
GLIBC_2.43 pthread_setconcurrency F
GLIBC_2.43 pthread_setname_np F
GLIBC_2.43 pthread_setschedprio F
+GLIBC_2.43 pthread_spin_destroy F
+GLIBC_2.43 pthread_spin_init F
+GLIBC_2.43 pthread_spin_lock F
+GLIBC_2.43 pthread_spin_trylock F
+GLIBC_2.43 pthread_spin_unlock F
GLIBC_2.43 pthread_testcancel F
GLIBC_2.43 pthread_timedjoin_np F
GLIBC_2.43 pthread_tryjoin_np F
-GLIBC_2.12 __pthread_spin_destroy F
-GLIBC_2.12 __pthread_spin_init F
-GLIBC_2.12 __pthread_spin_lock F
-GLIBC_2.12 __pthread_spin_trylock F
-GLIBC_2.12 __pthread_spin_unlock F
-GLIBC_2.12 _pthread_spin_lock F
GLIBC_2.12 pthread_atfork F
-GLIBC_2.12 pthread_spin_destroy F
-GLIBC_2.12 pthread_spin_init F
-GLIBC_2.12 pthread_spin_lock F
-GLIBC_2.12 pthread_spin_trylock F
-GLIBC_2.12 pthread_spin_unlock F
GLIBC_2.32 call_once F
GLIBC_2.32 cnd_broadcast F
GLIBC_2.32 cnd_destroy F
GLIBC_2.38 pthread_setschedprio F
GLIBC_2.38 pthread_setspecific F
GLIBC_2.38 pthread_sigmask F
+GLIBC_2.38 pthread_spin_destroy F
+GLIBC_2.38 pthread_spin_init F
+GLIBC_2.38 pthread_spin_lock F
+GLIBC_2.38 pthread_spin_trylock F
+GLIBC_2.38 pthread_spin_unlock F
GLIBC_2.38 pthread_testcancel F
GLIBC_2.38 pthread_timedjoin_np F
GLIBC_2.38 pthread_tryjoin_np F
GLIBC_2.43 pthread_setconcurrency F
GLIBC_2.43 pthread_setname_np F
GLIBC_2.43 pthread_setschedprio F
+GLIBC_2.43 pthread_spin_destroy F
+GLIBC_2.43 pthread_spin_init F
+GLIBC_2.43 pthread_spin_lock F
+GLIBC_2.43 pthread_spin_trylock F
+GLIBC_2.43 pthread_spin_unlock F
GLIBC_2.43 pthread_testcancel F
GLIBC_2.43 pthread_timedjoin_np F
GLIBC_2.43 pthread_tryjoin_np F
-GLIBC_2.38 __pthread_spin_destroy F
-GLIBC_2.38 __pthread_spin_init F
-GLIBC_2.38 __pthread_spin_lock F
-GLIBC_2.38 __pthread_spin_trylock F
-GLIBC_2.38 __pthread_spin_unlock F
-GLIBC_2.38 _pthread_spin_lock F
GLIBC_2.38 call_once F
GLIBC_2.38 cnd_broadcast F
GLIBC_2.38 cnd_destroy F
GLIBC_2.38 mtx_timedlock F
GLIBC_2.38 mtx_trylock F
GLIBC_2.38 mtx_unlock F
-GLIBC_2.38 pthread_spin_destroy F
-GLIBC_2.38 pthread_spin_init F
-GLIBC_2.38 pthread_spin_lock F
-GLIBC_2.38 pthread_spin_trylock F
-GLIBC_2.38 pthread_spin_unlock F
GLIBC_2.38 thrd_create F
GLIBC_2.38 thrd_detach F
GLIBC_2.38 thrd_exit F