From 17cb748217309b34b22d599f50256e9b3ef7c29e Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Tue, 16 Jul 2024 12:48:14 +0200 Subject: [PATCH] Implement syscall restart for waitpid. --- redox-rt/src/sys.rs | 10 ++++++++++ src/platform/redox/mod.rs | 7 +------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/redox-rt/src/sys.rs b/redox-rt/src/sys.rs index 29f7ef33..6e8b1d82 100644 --- a/redox-rt/src/sys.rs +++ b/redox-rt/src/sys.rs @@ -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"), + ) + }) +} diff --git a/src/platform/redox/mod.rs b/src/platform/redox/mod.rs index e6d415e0..e1b1351f 100644 --- a/src/platform/redox/mod.rs +++ b/src/platform/redox/mod.rs @@ -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 -- GitLab