MINOR: threads: use faster locks for the spin locks
The spin locks used to rely on W locks, which involve a loop waiting
for readers to leave, and this doesn't happen here. It's more efficient
to use S locks instead, which are also mutually exclusive and do not
have this loop. This saves one test per spinlock and a few tens of
bytes allowing certain functions to be inlined.
diff --git a/include/common/hathreads.h b/include/common/hathreads.h
index 853c9f1..0a9098d 100644
--- a/include/common/hathreads.h
+++ b/include/common/hathreads.h
@@ -191,9 +191,9 @@
#define __SPIN_INIT(l) ({ (*l) = 0; })
#define __SPIN_DESTROY(l) ({ (*l) = 0; })
-#define __SPIN_LOCK(l) pl_take_w(l)
-#define __SPIN_TRYLOCK(l) !pl_try_w(l)
-#define __SPIN_UNLOCK(l) pl_drop_w(l)
+#define __SPIN_LOCK(l) pl_take_s(l)
+#define __SPIN_TRYLOCK(l) !pl_try_s(l)
+#define __SPIN_UNLOCK(l) pl_drop_s(l)
#define __HA_RWLOCK_T unsigned long
@@ -552,9 +552,9 @@
#define SPIN_INIT(l) ({ (*l) = 0; })
#define SPIN_DESTROY(l) ({ (*l) = 0; })
-#define SPIN_LOCK(lbl, l) pl_take_w(l)
-#define SPIN_TRYLOCK(lbl, l) !pl_try_w(l)
-#define SPIN_UNLOCK(lbl, l) pl_drop_w(l)
+#define SPIN_LOCK(lbl, l) pl_take_s(l)
+#define SPIN_TRYLOCK(lbl, l) !pl_try_s(l)
+#define SPIN_UNLOCK(lbl, l) pl_drop_s(l)
#define HA_RWLOCK_T unsigned long