From 05bc77d7be64465a9aa27f7c64021efd132068d9 Mon Sep 17 00:00:00 2001 From: Ron Williams Date: Thu, 5 Feb 2026 04:30:23 +0000 Subject: [PATCH] Use posix_kill instead of posix_sigqueue for non-realtime signals --- redox-rt/src/sys.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/redox-rt/src/sys.rs b/redox-rt/src/sys.rs index dfb6c8ed1e..722cff6f62 100644 --- a/redox-rt/src/sys.rs +++ b/redox-rt/src/sys.rs @@ -7,7 +7,7 @@ use core::{ use ioslice::IoSlice; use syscall::{ CallFlags, EINVAL, ERESTART, TimeSpec, - error::{self, EINTR, ENODEV, Error, Result}, + error::{self, EINTR, ENODEV, ESRCH, Error, Result}, }; use crate::{ @@ -70,6 +70,13 @@ pub fn posix_kill(target: ProcKillTarget, sig: usize) -> Result<()> { } #[inline] pub fn posix_sigqueue(pid: usize, sig: usize, arg: usize) -> Result<()> { + let target = ProcKillTarget::from_raw(pid); + if !matches!(target, ProcKillTarget::SingleProc(_)) { + return Err(Error::new(ESRCH)); + } + if sig <= 32 { + return posix_kill(target, sig); + } let mut siginf = RtSigInfo { arg, code: -1, // TODO: SI_QUEUE constant