diff options
author | bors <bors@rust-lang.org> | 2021-12-09 15:14:01 +0000 |
---|---|---|
committer | bors <bors@rust-lang.org> | 2021-12-09 15:14:01 +0000 |
commit | fb3dec288152d2e077fc0ac9c6a249ff526c641f (patch) | |
tree | 4ed75bb845359e2f2d3a96997047d89f278ef807 | |
parent | 6fe1ff94948e805c0d20970adaa73ebdd4fd7d1b (diff) | |
parent | ab1013b027144dcd3c22d19dc68c16a4def20bd8 (diff) | |
download | rust-libc-fb3dec288152d2e077fc0ac9c6a249ff526c641f.tar.gz |
Auto merge of #2525 - qwandor:mlock2, r=Amanieu
Add mlock2 on Android and Linux.
Unfortunately the type of the flags parameter is different between Bionic and glibc for some reason.
-rw-r--r-- | libc-test/build.rs | 3 | ||||
-rw-r--r-- | src/unix/linux_like/android/mod.rs | 4 | ||||
-rw-r--r-- | src/unix/linux_like/linux/mod.rs | 2 |
3 files changed, 9 insertions, 0 deletions
diff --git a/libc-test/build.rs b/libc-test/build.rs index ad023fbd84..fbcc0f3bed 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -1702,6 +1702,9 @@ fn test_android(target: &str) { "reallocarray" => true, "__system_property_wait" => true, + // Added in API level 30, but tests use level 28. + "mlock2" => true, + _ => false, } }); diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs index 7973509964..c97744de5f 100644 --- a/src/unix/linux_like/android/mod.rs +++ b/src/unix/linux_like/android/mod.rs @@ -2328,6 +2328,9 @@ pub const ALG_SET_AEAD_AUTHSIZE: ::c_int = 5; pub const ALG_OP_DECRYPT: ::c_int = 0; pub const ALG_OP_ENCRYPT: ::c_int = 1; +// sys/mman.h +pub const MLOCK_ONFAULT: ::c_int = 0x01; + // uapi/linux/vm_sockets.h pub const VMADDR_CID_ANY: ::c_uint = 0xFFFFFFFF; pub const VMADDR_CID_HYPERVISOR: ::c_uint = 0; @@ -2582,6 +2585,7 @@ extern "C" { pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int; pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::timezone) -> ::c_int; + pub fn mlock2(addr: *const ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int; pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int; pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int; pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int; diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs index ed70756a0e..c3874dfff8 100644 --- a/src/unix/linux_like/linux/mod.rs +++ b/src/unix/linux_like/linux/mod.rs @@ -2583,6 +2583,7 @@ pub const MAP_SHARED_VALIDATE: ::c_int = 0x3; // include/uapi/asm-generic/mman-common.h pub const MAP_FIXED_NOREPLACE: ::c_int = 0x100000; +pub const MLOCK_ONFAULT: ::c_uint = 0x01; // uapi/linux/vm_sockets.h pub const VMADDR_CID_ANY: ::c_uint = 0xFFFFFFFF; @@ -3533,6 +3534,7 @@ extern "C" { pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long); pub fn telldir(dirp: *mut ::DIR) -> ::c_long; + pub fn mlock2(addr: *const ::c_void, len: ::size_t, flags: ::c_uint) -> ::c_int; pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int; pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int; |