summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-02-12 02:27:05 +0000
committerbors <bors@rust-lang.org>2023-02-12 02:27:05 +0000
commit4dc004192b54f93871418a9e17a7d30554c601e3 (patch)
tree7ccfcf3de02c5c7e42e9b21a141bbb99daecdc8a
parent17adcf2811720173562d25b4aa5a7d4e4aa1bf46 (diff)
parentc40f8e43480ef37f65235fdcb1465adeb9685b9f (diff)
downloadrust-libc-4dc004192b54f93871418a9e17a7d30554c601e3.tar.gz
Auto merge of #3109 - voskh0d:master, r=JohnTitor
linux: add more constants and FUTEX_OP for futex Add FUTEX_BITSET_MATCH_ANY, FUTEX_OP_* constant and a const fonction, FUTEX_OP() to replace the macro in C.
-rw-r--r--libc-test/semver/linux.txt14
-rw-r--r--src/unix/linux_like/linux/mod.rs21
2 files changed, 35 insertions, 0 deletions
diff --git a/libc-test/semver/linux.txt b/libc-test/semver/linux.txt
index 2907fc09e2..284f8d36fc 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 3481dcc044..b505f39e66 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;