From 8f03a364f803ad878ea3ab226fd2955ed4565495 Mon Sep 17 00:00:00 2001 From: Agustina Arzille Date: Tue, 18 Oct 2016 00:20:45 +0200 Subject: Make pthread_spinlock use gsync * pthread/pt-spin-inlines.c (pthread_spin_lock): Define weak alias for __pthread_spin_lock. * sysdeps/mach/bits/spin-lock-inline.h: Include instead of . (__pthread_spin_trylock, __pthread_spin_unlock): Use __spin_lock_t type instead of __lock. (__pthread_spin_lock): Define as inline only, use __spin_lock and __spin_lock_t type. * sysdeps/mach/bits/spin-lock.h: Do not include (__pthread_spinlock_t): Use volatile int instead of __spin_lock_t. (__PTHREAD_SPIN_LOCK_INITIALIZER): Define to 0. * sysdeps/mach/i386/bits/spin-lock-inline.h: Remove file. * sysdeps/mach/i386/bits/spin-lock.h: Remove file. * sysdeps/posix/pt-spin.c (pthread_spin_lock, __pthread_spin_lock): Remove weak aliases, provided by pt-spin-inlines.c --- sysdeps/mach/bits/spin-lock-inline.h | 14 ++++++-------- sysdeps/mach/bits/spin-lock.h | 7 ++----- 2 files changed, 8 insertions(+), 13 deletions(-) (limited to 'sysdeps/mach/bits') diff --git a/sysdeps/mach/bits/spin-lock-inline.h b/sysdeps/mach/bits/spin-lock-inline.h index f9f7c29..98e4b3b 100644 --- a/sysdeps/mach/bits/spin-lock-inline.h +++ b/sysdeps/mach/bits/spin-lock-inline.h @@ -22,7 +22,7 @@ #include #include -#include /* This does all the work. */ +#include /* This does all the work. */ __BEGIN_DECLS @@ -60,17 +60,15 @@ __PT_SPIN_INLINE int __pthread_spin_trylock (__pthread_spinlock_t *__lock); __PT_SPIN_INLINE int __pthread_spin_trylock (__pthread_spinlock_t *__lock) { - return __spin_try_lock (__lock) ? 0 : __EBUSY; + return __spin_try_lock ((__spin_lock_t *) __lock) ? 0 : __EBUSY; } -__extern_inline int __pthread_spin_lock (__pthread_spinlock_t *__lock); -extern int _pthread_spin_lock (__pthread_spinlock_t *__lock); +__PT_SPIN_INLINE int __pthread_spin_lock (__pthread_spinlock_t *__lock); -__extern_inline int +__PT_SPIN_INLINE int __pthread_spin_lock (__pthread_spinlock_t *__lock) { - if (__pthread_spin_trylock (__lock)) - return _pthread_spin_lock (__lock); + __spin_lock ((__spin_lock_t *) __lock); return 0; } @@ -79,7 +77,7 @@ __PT_SPIN_INLINE int __pthread_spin_unlock (__pthread_spinlock_t *__lock); __PT_SPIN_INLINE int __pthread_spin_unlock (__pthread_spinlock_t *__lock) { - __spin_unlock (__lock); + __spin_unlock ((__spin_lock_t *) __lock); return 0; } diff --git a/sysdeps/mach/bits/spin-lock.h b/sysdeps/mach/bits/spin-lock.h index 537dac9..7574b37 100644 --- a/sysdeps/mach/bits/spin-lock.h +++ b/sysdeps/mach/bits/spin-lock.h @@ -21,17 +21,14 @@ #define _BITS_SPIN_LOCK_H 1 #include -#include /* This does all the work. */ __BEGIN_DECLS /* The type of a spin lock object. */ -typedef __spin_lock_t __pthread_spinlock_t; +typedef volatile int __pthread_spinlock_t; /* Initializer for a spin lock object. */ -#ifndef __PTHREAD_SPIN_LOCK_INITIALIZER -#error __PTHREAD_SPIN_LOCK_INITIALIZER undefined: should be defined by . -#endif +#define __PTHREAD_SPIN_LOCK_INITIALIZER 0 __END_DECLS -- cgit v1.2.3