Enable syscall restart in futex_wait.

This commit is contained in:
4lDO2
2024-07-16 11:55:06 +02:00
parent bcce7e18db
commit 4c20a9abb2
14 changed files with 292 additions and 151 deletions
+4 -3
View File
@@ -242,8 +242,9 @@ impl Pal for Sys {
unsafe fn futex_wait(
addr: *mut u32,
val: u32,
deadline: *const timespec,
deadline: Option<&timespec>,
) -> Result<(), crate::pthread::Errno> {
let deadline = deadline.map_or(0, |d| d as *const _ as usize);
e_raw(unsafe {
syscall!(
FUTEX, addr, // uaddr
@@ -257,11 +258,11 @@ impl Pal for Sys {
.map(|_| ())
}
#[inline]
unsafe fn futex_wake(addr: *mut u32, num: u32) -> Result<c_int, Errno> {
unsafe fn futex_wake(addr: *mut u32, num: u32) -> Result<u32, Errno> {
e_raw(unsafe {
syscall!(FUTEX, addr, 1 /* FUTEX_WAKE */, num)
})
.map(|n| n as c_int)
.map(|n| n as u32)
}
fn futimens(fd: c_int, times: *const timespec) -> c_int {