use crate::backend::c;
bitflags::bitflags! {
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub struct Flags: u32 {
const PRIVATE = bitcast!(c::FUTEX_PRIVATE_FLAG);
const CLOCK_REALTIME = bitcast!(c::FUTEX_CLOCK_REALTIME);
const _ = !0;
}
}
bitflags::bitflags! {
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub struct WaitFlags: u32 {
const SIZE_U8 = linux_raw_sys::general::FUTEX2_SIZE_U8;
const SIZE_U16 = linux_raw_sys::general::FUTEX2_SIZE_U16;
const SIZE_U32 = linux_raw_sys::general::FUTEX2_SIZE_U32;
const SIZE_U64 = linux_raw_sys::general::FUTEX2_SIZE_U64;
const SIZE_MASK = linux_raw_sys::general::FUTEX2_SIZE_MASK;
const NUMA = linux_raw_sys::general::FUTEX2_NUMA;
const PRIVATE = linux_raw_sys::general::FUTEX2_PRIVATE;
const _ = !0;
}
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[repr(u32)]
pub(crate) enum Operation {
Wait = bitcast!(c::FUTEX_WAIT),
Wake = bitcast!(c::FUTEX_WAKE),
Fd = bitcast!(c::FUTEX_FD),
Requeue = bitcast!(c::FUTEX_REQUEUE),
CmpRequeue = bitcast!(c::FUTEX_CMP_REQUEUE),
WakeOp = bitcast!(c::FUTEX_WAKE_OP),
LockPi = bitcast!(c::FUTEX_LOCK_PI),
UnlockPi = bitcast!(c::FUTEX_UNLOCK_PI),
TrylockPi = bitcast!(c::FUTEX_TRYLOCK_PI),
WaitBitset = bitcast!(c::FUTEX_WAIT_BITSET),
WakeBitset = bitcast!(c::FUTEX_WAKE_BITSET),
WaitRequeuePi = bitcast!(c::FUTEX_WAIT_REQUEUE_PI),
CmpRequeuePi = bitcast!(c::FUTEX_CMP_REQUEUE_PI),
LockPi2 = bitcast!(c::FUTEX_LOCK_PI2),
}
pub const WAITERS: u32 = linux_raw_sys::general::FUTEX_WAITERS;
pub const OWNER_DIED: u32 = linux_raw_sys::general::FUTEX_OWNER_DIED;