diff --git a/libc-test/build.rs b/libc-test/build.rs index 226757c6ad8dc..deb3ca4e456b2 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -1939,6 +1939,7 @@ fn test_freebsd(target: &str) { "sys/ucontext.h", "sys/uio.h", "sys/ktrace.h", + "sys/umtx.h", "sys/un.h", "sys/user.h", "sys/utsname.h", diff --git a/libc-test/semver/freebsd.txt b/libc-test/semver/freebsd.txt index cfb0ef8beab00..f1ce1b571ae93 100644 --- a/libc-test/semver/freebsd.txt +++ b/libc-test/semver/freebsd.txt @@ -1240,6 +1240,7 @@ UF_REPARSE UF_SETTABLE UF_SPARSE UF_SYSTEM +UMTX_ABSTIME UMTX_OP_WAIT UMTX_OP_WAKE UMTX_OP_MUTEX_TRYLOCK diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs index ed9afabeaac5d..c71e7bdc4be2b 100644 --- a/src/unix/bsd/freebsdlike/freebsd/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs @@ -1198,6 +1198,12 @@ s_no_extra_traits! { pub ifdr_vendor: u32, pub ifdr_msg: [::c_char; ::IFDR_MSG_SIZE as usize], } + + pub struct _umtx_time { + pub _timeout: ::timespec, + pub _flags: u32, + pub _clockid: u32, + } } cfg_if! { @@ -3682,6 +3688,8 @@ 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