summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Carlier <devnexen@gmail.com>2022-12-17 18:51:40 +0000
committerDavid Carlier <devnexen@gmail.com>2023-02-22 22:22:06 +0000
commit279d932447f67cf72a2c482a3d555a4684f776ec (patch)
tree6507474164691c724c9ba670b79993a260327136
parentf5363564c7ff96f8779043f7971145cb02345760 (diff)
downloadrust-libc-279d932447f67cf72a2c482a3d555a4684f776ec.tar.gz
membarrier flags constants addition
-rw-r--r--libc-test/build.rs11
-rw-r--r--libc-test/semver/android.txt10
-rw-r--r--libc-test/semver/linux.txt10
-rw-r--r--src/unix/linux_like/android/mod.rs12
-rw-r--r--src/unix/linux_like/linux/mod.rs12
5 files changed, 55 insertions, 0 deletions
diff --git a/libc-test/build.rs b/libc-test/build.rs
index 98c802e338..3534579425 100644
--- a/libc-test/build.rs
+++ b/libc-test/build.rs
@@ -1631,6 +1631,7 @@ fn test_android(target: &str) {
"linux/rtnetlink.h",
"linux/if_tun.h",
"linux/magic.h",
+ "linux/membarrier.h",
"linux/memfd.h",
"linux/mempolicy.h",
"linux/module.h",
@@ -1782,6 +1783,9 @@ fn test_android(target: &str) {
// GRND_INSECURE was added in platform-tools-30.0.0
"GRND_INSECURE" => true,
+ // kernel 5.10 minimum required
+ "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ" | "MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ" => true,
+
_ => false,
}
});
@@ -3244,6 +3248,7 @@ fn test_linux(target: &str) {
"linux/keyctl.h",
"linux/magic.h",
"linux/memfd.h",
+ "linux/membarrier.h",
"linux/mempolicy.h",
"linux/mman.h",
"linux/module.h",
@@ -3479,6 +3484,12 @@ fn test_linux(target: &str) {
{
return true;
}
+ // FIXME: Requires >= 5.10 kernel headers
+ if name.starts_with("MEMBARRIER_CMD_REGISTER")
+ || name.starts_with("MEMBARRIER_CMD_PRIVATE")
+ {
+ return true;
+ }
}
match name {
// These constants are not available if gnu headers have been included
diff --git a/libc-test/semver/android.txt b/libc-test/semver/android.txt
index 3bee01ca18..d0017b846c 100644
--- a/libc-test/semver/android.txt
+++ b/libc-test/semver/android.txt
@@ -1164,6 +1164,16 @@ MCAST_MSFILTER
MCAST_UNBLOCK_SOURCE
MCL_CURRENT
MCL_FUTURE
+MEMBARRIER_CMD_GLOBAL
+MEMBARRIER_CMD_GLOBAL_EXPEDITED
+MEMBARRIER_CMD_QUERY
+MEMBARRIER_CMD_PRIVATE_EXPEDITED
+MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE
+MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ
+MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED
+MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED
+MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE
+MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ
MFD_ALLOW_SEALING
MFD_CLOEXEC
MFD_HUGETLB
diff --git a/libc-test/semver/linux.txt b/libc-test/semver/linux.txt
index daccc3c38d..e7eefafd18 100644
--- a/libc-test/semver/linux.txt
+++ b/libc-test/semver/linux.txt
@@ -1300,6 +1300,16 @@ MCAST_MSFILTER
MCAST_UNBLOCK_SOURCE
MCL_CURRENT
MCL_FUTURE
+MEMBARRIER_CMD_GLOBAL
+MEMBARRIER_CMD_GLOBAL_EXPEDITED
+MEMBARRIER_CMD_QUERY
+MEMBARRIER_CMD_PRIVATE_EXPEDITED
+MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE
+MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ
+MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED
+MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED
+MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE
+MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ
MFD_ALLOW_SEALING
MFD_CLOEXEC
MFD_HUGETLB
diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs
index 2bc748ac4c..ca2938ac22 100644
--- a/src/unix/linux_like/android/mod.rs
+++ b/src/unix/linux_like/android/mod.rs
@@ -2732,6 +2732,18 @@ pub const SCHED_RESET_ON_FORK: ::c_int = 0x40000000;
pub const CLONE_PIDFD: ::c_int = 0x1000;
+// linux/membarrier.h
+pub const MEMBARRIER_CMD_QUERY: ::c_int = 0;
+pub const MEMBARRIER_CMD_GLOBAL: ::c_int = 1 << 0;
+pub const MEMBARRIER_CMD_GLOBAL_EXPEDITED: ::c_int = 1 << 1;
+pub const MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED: ::c_int = 1 << 2;
+pub const MEMBARRIER_CMD_PRIVATE_EXPEDITED: ::c_int = 1 << 3;
+pub const MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED: ::c_int = 1 << 4;
+pub const MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE: ::c_int = 1 << 5;
+pub const MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE: ::c_int = 1 << 6;
+pub const MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ: ::c_int = 1 << 7;
+pub const MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ: ::c_int = 1 << 8;
+
// linux/mempolicy.h
pub const MPOL_DEFAULT: ::c_int = 0;
pub const MPOL_PREFERRED: ::c_int = 1;
diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs
index be12190b45..ce4889d653 100644
--- a/src/unix/linux_like/linux/mod.rs
+++ b/src/unix/linux_like/linux/mod.rs
@@ -1849,6 +1849,18 @@ pub const MPOL_F_NUMA_BALANCING: ::c_int = 1 << 13;
pub const MPOL_F_RELATIVE_NODES: ::c_int = 1 << 14;
pub const MPOL_F_STATIC_NODES: ::c_int = 1 << 15;
+// linux/membarrier.h
+pub const MEMBARRIER_CMD_QUERY: ::c_int = 0;
+pub const MEMBARRIER_CMD_GLOBAL: ::c_int = 1 << 0;
+pub const MEMBARRIER_CMD_GLOBAL_EXPEDITED: ::c_int = 1 << 1;
+pub const MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED: ::c_int = 1 << 2;
+pub const MEMBARRIER_CMD_PRIVATE_EXPEDITED: ::c_int = 1 << 3;
+pub const MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED: ::c_int = 1 << 4;
+pub const MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE: ::c_int = 1 << 5;
+pub const MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE: ::c_int = 1 << 6;
+pub const MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ: ::c_int = 1 << 7;
+pub const MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ: ::c_int = 1 << 8;
+
align_const! {
pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t {
size: [0; __SIZEOF_PTHREAD_MUTEX_T],