4#include <cx/thread/atomic.h>
17 atomic(uint8) _ps_lock;
20_Static_assert(
sizeof(Futex) <=
sizeof(int64),
"Invalid Futex structure packing");
22void futexInit(_Out_ Futex *ftx, int32 val);
24_meta_inline int32 futexVal(_Inout_ Futex *ftx) {
25 return atomicLoad(int32, &ftx->val, Relaxed);
30_meta_inline
void futexSet(_Inout_ Futex *ftx, int32 val) {
31 atomicStore(int32, &ftx->val, val, Relaxed);
37int futexWait(_Inout_ Futex *ftx, int32 oldval, int64 timeout);
39void futexWake(_Inout_ Futex *ftx);
40void futexWakeMany(_Inout_ Futex *ftx,
int count);
41void futexWakeAll(_Inout_ Futex *ftx);