Implement syscall restart for waitpid.

This commit is contained in:
4lDO2
2024-07-16 12:48:14 +02:00
parent 4c20a9abb2
commit 17cb748217
2 changed files with 11 additions and 6 deletions
+10
View File
@@ -76,3 +76,13 @@ pub unsafe fn sys_futex_wake(addr: *mut u32, num: u32) -> Result<u32> {
)
.map(|awoken| awoken as u32)
}
pub fn sys_waitpid(pid: usize, status: &mut usize, flags: usize) -> Result<usize> {
wrapper(|| {
syscall::waitpid(
pid,
status,
syscall::WaitFlags::from_bits(flags)
.expect("waitpid: invalid bit pattern"),
)
})
}
+1 -6
View File
@@ -1058,12 +1058,7 @@ impl Pal for Sys {
let mut status = 0;
let inner = |status: &mut usize, flags| {
syscall::waitpid(
pid as usize,
status,
syscall::WaitFlags::from_bits(flags as usize)
.expect("waitpid: invalid bit pattern"),
)
redox_rt::sys::sys_waitpid(pid as usize, status, flags as usize)
};
// First, allow ptrace to handle waitpid