From a265c8b7a012c497a955721d95a00aa4ab68f844 Mon Sep 17 00:00:00 2001
From: 4lDO2 <4lDO2@protonmail.com>
Date: Sun, 23 Jun 2024 13:24:30 +0200
Subject: [PATCH] Reimplement libredox sig{procmask,action}.

---
 src/platform/redox/libredox.rs | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/platform/redox/libredox.rs b/src/platform/redox/libredox.rs
index 9ceed89a7..a1789e24c 100644
--- a/src/platform/redox/libredox.rs
+++ b/src/platform/redox/libredox.rs
@@ -4,11 +4,13 @@ use syscall::{Error, Result, WaitFlags, EMFILE};
 
 use crate::{
     header::{
-        errno::EINVAL, signal::{sigaction, SIG_SETMASK}, sys_stat::UTIME_NOW, sys_uio::iovec, time::timespec,
+        errno::EINVAL, signal::{sigaction, SIG_BLOCK, SIG_SETMASK, SIG_UNBLOCK}, sys_stat::UTIME_NOW, sys_uio::iovec, time::timespec,
     },
-    platform::types::*,
+    platform::{types::*, PalSignal},
 };
 
+use super::Sys;
+
 pub type RawResult = usize;
 
 pub fn open(path: &str, oflag: c_int, mode: mode_t) -> Result<usize> {
@@ -249,7 +251,7 @@ pub unsafe extern "C" fn redox_sigaction_v1(
     new: *const sigaction,
     old: *mut sigaction,
 ) -> RawResult {
-    todo!()
+    Error::mux(Sys::sigaction(signal as c_int, new.as_ref(), old.as_mut()).map(|()| 0).map_err(Into::into))
 }
 
 #[no_mangle]
@@ -258,7 +260,7 @@ pub unsafe extern "C" fn redox_sigprocmask_v1(
     new: *const u64,
     old: *mut u64,
 ) -> RawResult {
-    todo!()
+    Error::mux(Sys::sigprocmask(how as c_int, new.as_ref(), old.as_mut()).map(|()| 0).map_err(Into::into))
 }
 #[no_mangle]
 pub unsafe extern "C" fn redox_mmap_v1(
-- 
GitLab