Merge branch 'sigwaitinfo_ret' into 'master'

Return awaited signal number in sigtimedwait

Closes #245

See merge request redox-os/relibc!932
This commit is contained in:
Jeremy Soller
2026-01-31 12:28:55 -07:00
5 changed files with 6 additions and 6 deletions
-1
View File
@@ -513,7 +513,6 @@ pub unsafe extern "C" fn sigtimedwait(
Sys::sigtimedwait(unsafe { &*set }, unsafe { sig.as_mut() }, unsafe {
tp.as_ref()
})
.map(|()| 0)
.or_minus_one_errno()
}
+2 -2
View File
@@ -137,7 +137,7 @@ impl PalSignal for Sys {
set: &sigset_t,
sig: Option<&mut siginfo_t>,
tp: Option<&timespec>,
) -> Result<()> {
) -> Result<c_int> {
unsafe {
e_raw(syscall!(
RT_SIGTIMEDWAIT,
@@ -146,7 +146,7 @@ impl PalSignal for Sys {
tp.map_or_else(core::ptr::null, |t| t as *const _),
size_of::<sigset_t>()
))
.map(|_| ())
.map(|s| s as c_int)
}
}
}
+1 -1
View File
@@ -35,5 +35,5 @@ pub trait PalSignal: Pal {
set: &sigset_t,
sig: Option<&mut siginfo_t>,
tp: Option<&timespec>,
) -> Result<()>;
) -> Result<c_int>;
}
+2 -2
View File
@@ -249,7 +249,7 @@ impl PalSignal for Sys {
set: &sigset_t,
info_out: Option<&mut siginfo_t>,
timeout: Option<&timespec>,
) -> Result<(), Errno> {
) -> Result<c_int, Errno> {
// TODO: deadline-based API
let timeout = timeout.map(|timeout| syscall::TimeSpec {
tv_sec: timeout.tv_sec,
@@ -259,6 +259,6 @@ impl PalSignal for Sys {
if let Some(out) = info_out {
*out = info;
}
Ok(())
Ok(info.si_signo)
}
}
+1
View File
@@ -100,6 +100,7 @@ int main(void)
struct timespec t = (struct timespec){.tv_sec = 1, .tv_nsec = 200000000};
status = sigtimedwait(&set, &info, &t);
ERROR_IF(sigtimedwait, status, == -1);
assert(status == THE_SIG);
validate(THE_SIG, &info);
assert(num == 0); // ensure no signal handler ran