diff --git a/libc-test/semver/linux.txt b/libc-test/semver/linux.txt index 2907fc09e219f..284f8d36fcfc1 100644 --- a/libc-test/semver/linux.txt +++ b/libc-test/semver/linux.txt @@ -724,6 +724,7 @@ FIONCLEX FIONREAD FLUSHO FOPEN_MAX +FUTEX_BITSET_MATCH_ANY FUTEX_CLOCK_REALTIME FUTEX_CMD_MASK FUTEX_CMP_REQUEUE @@ -731,6 +732,19 @@ FUTEX_CMP_REQUEUE_PI FUTEX_FD FUTEX_LOCK_PI FUTEX_LOCK_PI2 +FUTEX_OP +FUTEX_OP_ADD +FUTEX_OP_ANDN +FUTEX_OP_CMP_EQ +FUTEX_OP_CMP_GE +FUTEX_OP_CMP_GT +FUTEX_OP_CMP_LE +FUTEX_OP_CMP_LT +FUTEX_OP_CMP_NE +FUTEX_OP_OPARG_SHIFT +FUTEX_OP_OR +FUTEX_OP_SET +FUTEX_OP_XOR FUTEX_PRIVATE_FLAG FUTEX_REQUEUE FUTEX_TRYLOCK_PI diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs index 3481dcc044c50..b505f39e662b0 100644 --- a/src/unix/linux_like/linux/mod.rs +++ b/src/unix/linux_like/linux/mod.rs @@ -3456,6 +3456,27 @@ pub const FUTEX_PRIVATE_FLAG: ::c_int = 128; pub const FUTEX_CLOCK_REALTIME: ::c_int = 256; pub const FUTEX_CMD_MASK: ::c_int = !(FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME); +pub const FUTEX_BITSET_MATCH_ANY: ::c_int = 0xffffffff; + +pub const FUTEX_OP_SET: ::c_int = 0; +pub const FUTEX_OP_ADD: ::c_int = 1; +pub const FUTEX_OP_OR: ::c_int = 2; +pub const FUTEX_OP_ANDN: ::c_int = 3; +pub const FUTEX_OP_XOR: ::c_int = 4; + +pub const FUTEX_OP_OPARG_SHIFT: ::c_int = 8; + +pub const FUTEX_OP_CMP_EQ: ::c_int = 0; +pub const FUTEX_OP_CMP_NE: ::c_int = 1; +pub const FUTEX_OP_CMP_LT: ::c_int = 2; +pub const FUTEX_OP_CMP_LE: ::c_int = 3; +pub const FUTEX_OP_CMP_GT: ::c_int = 4; +pub const FUTEX_OP_CMP_GE: ::c_int = 5; + +pub fn FUTEX_OP(op: ::c_int, oparg: ::c_int, cmp: ::c_int, cmparg: ::c_int) -> ::c_int { + ((op & 0xf) << 28) | ((cmp & 0xf) << 24) | ((oparg & 0xfff) << 12) | (cmparg & 0xfff) +} + // linux/reboot.h pub const LINUX_REBOOT_MAGIC1: ::c_int = 0xfee1dead; pub const LINUX_REBOOT_MAGIC2: ::c_int = 672274793;