1 bitflags::bitflags! { 2 /// `FUTEX_*` flags for use with [`futex`]. 3 /// 4 /// [`futex`]: crate::thread::futex 5 #[repr(transparent)] 6 #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] 7 pub struct FutexFlags: u32 { 8 /// `FUTEX_PRIVATE_FLAG` 9 const PRIVATE = linux_raw_sys::general::FUTEX_PRIVATE_FLAG; 10 /// `FUTEX_CLOCK_REALTIME` 11 const CLOCK_REALTIME = linux_raw_sys::general::FUTEX_CLOCK_REALTIME; 12 13 // This deliberately lacks a `const _ = !0`, so that users can use 14 // `from_bits_truncate` to extract the `SocketFlags` from a flags 15 // value that also includes a `SocketType`. 16 } 17 } 18 19 /// `FUTEX_*` operations for use with [`futex`]. 20 /// 21 /// [`futex`]: crate::thread::futex 22 #[derive(Debug, Copy, Clone, Eq, PartialEq)] 23 #[repr(u32)] 24 pub enum FutexOperation { 25 /// `FUTEX_WAIT` 26 Wait = linux_raw_sys::general::FUTEX_WAIT, 27 /// `FUTEX_WAKE` 28 Wake = linux_raw_sys::general::FUTEX_WAKE, 29 /// `FUTEX_FD` 30 Fd = linux_raw_sys::general::FUTEX_FD, 31 /// `FUTEX_REQUEUE` 32 Requeue = linux_raw_sys::general::FUTEX_REQUEUE, 33 /// `FUTEX_CMP_REQUEUE` 34 CmpRequeue = linux_raw_sys::general::FUTEX_CMP_REQUEUE, 35 /// `FUTEX_WAKE_OP` 36 WakeOp = linux_raw_sys::general::FUTEX_WAKE_OP, 37 /// `FUTEX_LOCK_PI` 38 LockPi = linux_raw_sys::general::FUTEX_LOCK_PI, 39 /// `FUTEX_UNLOCK_PI` 40 UnlockPi = linux_raw_sys::general::FUTEX_UNLOCK_PI, 41 /// `FUTEX_TRYLOCK_PI` 42 TrylockPi = linux_raw_sys::general::FUTEX_TRYLOCK_PI, 43 /// `FUTEX_WAIT_BITSET` 44 WaitBitset = linux_raw_sys::general::FUTEX_WAIT_BITSET, 45 } 46