--- libev/ev_linuxaio.c 2019/06/23 02:02:24 1.10 +++ libev/ev_linuxaio.c 2019/06/23 22:57:25 1.11 @@ -244,7 +244,10 @@ linuxaio_parse_events (EV_A_ ring->io_events, tail); } - ring->head = tail; + *(volatile unsigned *)&ring->head = tail; + + /* again, other implementations don't do this, but I think it's required for the kernel to see free slots */ + ECB_MEMORY_FENCE_RELEASE; return 1; }