summaryrefslogtreecommitdiff
path: root/src/unix/bsd/freebsdlike/freebsd/mod.rs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2022-04-28 17:55:57 +0000
committerbors <bors@rust-lang.org>2022-04-28 17:55:57 +0000
commit3b5fcd60d1d461d98995a49c3f7542ad9c54bf88 (patch)
treecf740c9766e78c94b21e02483f442f70b1bd5d17 /src/unix/bsd/freebsdlike/freebsd/mod.rs
parent27ad069636e8defba5d3a672b691248249ed8c2b (diff)
parent6700aff25cfc0bc6d5894c1d38ce2446e7fe809c (diff)
downloadrust-libc-3b5fcd60d1d461d98995a49c3f7542ad9c54bf88.tar.gz
Auto merge of #2770 - m-ou-se:freebsd-futex, r=Amanieu
Add umtx_op to FreeBSD. See https://www.freebsd.org/cgi/man.cgi?query=_umtx_op&sektion=2&manpath=FreeBSD+11.0-RELEASE+and+Ports and https://github.com/FreeBSD/freebsd-src/blob/stable/11/sys/sys/umtx.h.
Diffstat (limited to 'src/unix/bsd/freebsdlike/freebsd/mod.rs')
-rw-r--r--src/unix/bsd/freebsdlike/freebsd/mod.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs
index 8d78c0cba5..6194ac4e7c 100644
--- a/src/unix/bsd/freebsdlike/freebsd/mod.rs
+++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs
@@ -988,6 +988,12 @@ s! {
pub function_set_name: [::c_char; ::TCP_FUNCTION_NAME_LEN_MAX as usize],
pub pcbcnt: u32,
}
+
+ pub struct _umtx_time {
+ pub _timeout: ::timespec,
+ pub _flags: u32,
+ pub _clockid: u32,
+ }
}
s_no_extra_traits! {
@@ -3657,6 +3663,33 @@ pub const SHM_LARGEPAGE_ALLOC_HARD: ::c_int = 2;
pub const SHM_RENAME_NOREPLACE: ::c_int = 1 << 0;
pub const SHM_RENAME_EXCHANGE: ::c_int = 1 << 1;
+// sys/umtx.h
+
+pub const UMTX_OP_WAIT: ::c_int = 2;
+pub const UMTX_OP_WAKE: ::c_int = 3;
+pub const UMTX_OP_MUTEX_TRYLOCK: ::c_int = 4;
+pub const UMTX_OP_MUTEX_LOCK: ::c_int = 5;
+pub const UMTX_OP_MUTEX_UNLOCK: ::c_int = 6;
+pub const UMTX_OP_SET_CEILING: ::c_int = 7;
+pub const UMTX_OP_CV_WAIT: ::c_int = 8;
+pub const UMTX_OP_CV_SIGNAL: ::c_int = 9;
+pub const UMTX_OP_CV_BROADCAST: ::c_int = 10;
+pub const UMTX_OP_WAIT_UINT: ::c_int = 11;
+pub const UMTX_OP_RW_RDLOCK: ::c_int = 12;
+pub const UMTX_OP_RW_WRLOCK: ::c_int = 13;
+pub const UMTX_OP_RW_UNLOCK: ::c_int = 14;
+pub const UMTX_OP_WAIT_UINT_PRIVATE: ::c_int = 15;
+pub const UMTX_OP_WAKE_PRIVATE: ::c_int = 16;
+pub const UMTX_OP_MUTEX_WAIT: ::c_int = 17;
+pub const UMTX_OP_NWAKE_PRIVATE: ::c_int = 21;
+pub const UMTX_OP_MUTEX_WAKE2: ::c_int = 22;
+pub const UMTX_OP_SEM2_WAIT: ::c_int = 23;
+pub const UMTX_OP_SEM2_WAKE: ::c_int = 24;
+pub const UMTX_OP_SHM: ::c_int = 25;
+pub const UMTX_OP_ROBUST_LISTS: ::c_int = 26;
+
+pub const UMTX_ABSTIME: u32 = 1;
+
const_fn! {
{const} fn _ALIGN(p: usize) -> usize {
(p + _ALIGNBYTES) & !_ALIGNBYTES
@@ -4220,6 +4253,14 @@ extern "C" {
) -> ::c_int;
pub fn memfd_create(name: *const ::c_char, flags: ::c_uint) -> ::c_int;
pub fn setaudit(auditinfo: *const auditinfo_t) -> ::c_int;
+
+ pub fn _umtx_op(
+ obj: *mut ::c_void,
+ op: ::c_int,
+ val: ::c_ulong,
+ uaddr: *mut ::c_void,
+ uaddr2: *mut ::c_void,
+ ) -> ::c_int;
}
#[link(name = "kvm")]