mailing list of musl libc
 help / color / mirror / code / Atom feed
* [PATCH] Use CAS instead of atomic swap to implement spinlock
@ 2015-04-14 22:44 Alexander Monakov
  2015-04-14 23:16 ` Rich Felker
  2015-04-19  0:24 ` [PATCH] Use CAS instead of atomic swap to implement spinlock Rich Felker
  0 siblings, 2 replies; 8+ messages in thread
From: Alexander Monakov @ 2015-04-14 22:44 UTC (permalink / raw)
  To: musl; +Cc: Alexander Monakov

This should allow spinning without constantly dirtying cache lines holding the
spinlock value.  On architectures without native atomic swap, musl implement
a_swap by looping around a_cas.
---
If I'm not mistaken this was also suggested by nsz on IRC.

 src/thread/pthread_spin_lock.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/thread/pthread_spin_lock.c b/src/thread/pthread_spin_lock.c
index df575f0..dabcb31 100644
--- a/src/thread/pthread_spin_lock.c
+++ b/src/thread/pthread_spin_lock.c
@@ -2,6 +2,6 @@
 
 int pthread_spin_lock(pthread_spinlock_t *s)
 {
-	while (a_swap(s, 1)) a_spin();
+	while (a_cas(s, 0, 1)) a_spin();
 	return 0;
 }
-- 
2.1.3



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2015-04-19 12:46 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-14 22:44 [PATCH] Use CAS instead of atomic swap to implement spinlock Alexander Monakov
2015-04-14 23:16 ` Rich Felker
2015-04-15  6:29   ` Concerns about dlclose() behaviour Brad Conroy
2015-04-15  7:17     ` Rich Felker
2015-04-19  0:24 ` [PATCH] Use CAS instead of atomic swap to implement spinlock Rich Felker
2015-04-19  5:50   ` Alexander Monakov
2015-04-19  6:01     ` Rich Felker
2015-04-19 12:46       ` Szabolcs Nagy

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).