MEDIUM: poller: use atomic ops to update the fdtab mask
We don't need to lock the fdtab[].lock anymore since we only have one
modification left (update update_mask). Let's use an atomic AND instead.
diff --git a/src/ev_kqueue.c b/src/ev_kqueue.c
index fcd04fd..cc96307 100644
--- a/src/ev_kqueue.c
+++ b/src/ev_kqueue.c
@@ -52,10 +52,8 @@
continue;
}
- HA_SPIN_LOCK(FD_LOCK, &fdtab[fd].lock);
- fdtab[fd].update_mask &= ~tid_bit;
en = fdtab[fd].state;
- HA_SPIN_UNLOCK(FD_LOCK, &fdtab[fd].lock);
+ HA_ATOMIC_AND(&fdtab[fd].update_mask, ~tid_bit);
if (!(fdtab[fd].thread_mask & tid_bit) || !(en & FD_EV_POLLED_RW)) {
if (!(fdtab[fd].polled_mask & tid_bit)) {