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