summaryrefslogtreecommitdiff
path: root/ports/sysdeps/arm/nptl/pthread_spin_lock.c
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <maxim@codesourcery.com>2012-08-15 16:29:06 -0700
committerMaxim Kuvyrkov <maxim@codesourcery.com>2012-08-15 16:29:06 -0700
commitef4009734b84903615be28b38638c166e5455692 (patch)
tree93062b1f67b1c46ffa1c0cf35f882623ec7aeb39 /ports/sysdeps/arm/nptl/pthread_spin_lock.c
parent329bc0186823da075e1a41aab9a4cdc78fb858aa (diff)
downloadglibc-ef4009734b84903615be28b38638c166e5455692.tar.gz
Add generic versions of pthread_spin_lock and pthread_spin_trylock.
Diffstat (limited to 'ports/sysdeps/arm/nptl/pthread_spin_lock.c')
-rw-r--r--ports/sysdeps/arm/nptl/pthread_spin_lock.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/ports/sysdeps/arm/nptl/pthread_spin_lock.c b/ports/sysdeps/arm/nptl/pthread_spin_lock.c
index 3a23bd31a5..4f81571735 100644
--- a/ports/sysdeps/arm/nptl/pthread_spin_lock.c
+++ b/ports/sysdeps/arm/nptl/pthread_spin_lock.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2012 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
@@ -15,15 +15,9 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
-#include <atomic.h>
-#include "pthreadP.h"
+#define SPIN_LOCK_READS_BETWEEN_CMPXCHG 1000
-int
-pthread_spin_lock (pthread_spinlock_t *lock)
-{
- while (atomic_compare_and_exchange_val_acq (lock, 1, 0) != 0)
- while (*lock != 0)
- ;
-
- return 0;
-}
+/* We can't use the normal "#include <nptl/pthread_spin_lock.c>" because
+ it will resolve to this very file. Using "sysdeps/.." as reference to the
+ top level directory does the job. */
+#include <sysdeps/../nptl/pthread_spin_lock.c>