The last fix for the volatile dereference made use of pl_deref_int()
which is unknown when building without threads. Let's simply open-code
it instead. No backport needed.
#else
lock_self_next:
- next = pl_deref_int(&fdtab[fd].cache.next);
+ next = ({ volatile int *next = &fdtab[fd].cache.next; *next; });
if (next == -2)
goto lock_self_next;
if (next <= -3)
if (unlikely(!HA_ATOMIC_CAS(&fdtab[fd].cache.next, &next, -2)))
goto lock_self_next;
lock_self_prev:
- prev = pl_deref_int(&fdtab[fd].cache.prev);
+ prev = ({ volatile int *prev = &fdtab[fd].cache.prev; *prev; });
if (prev == -2)
goto lock_self_prev;
if (unlikely(!HA_ATOMIC_CAS(&fdtab[fd].cache.prev, &prev, -2)))