diff --git a/redox-rt/src/sys.rs b/redox-rt/src/sys.rs
index 29f7ef3350b14e610ddf5e9e53c07316b01ec2ac..6e8b1d823af6f2f68639ce18d75739bf50413880 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 e6d415e0eb38719adb8881afcfd49d40ef162af0..e1b1351f35ae0d8e556373aa5aea7cc266d28fe0 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