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