From b73dd2202062dd8e9f731f2a635c748a94054684 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 15 Apr 2026 21:03:36 +0700 Subject: [PATCH] Disable SIGARLM timer delivery --- src/platform/redox/timer.rs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/platform/redox/timer.rs b/src/platform/redox/timer.rs index 5289e054da..4ca03d67fd 100644 --- a/src/platform/redox/timer.rs +++ b/src/platform/redox/timer.rs @@ -9,7 +9,7 @@ use crate::{ time::timer_internal_t, }, out::Out, - platform::{Pal, PalSignal, Sys, sys::event, types::c_void}, + platform::{Pal, Sys, sys::event, types::c_void}, }; use core::{ mem::{MaybeUninit, size_of}, @@ -42,14 +42,12 @@ pub extern "C" fn timer_routine(arg: *mut c_void) -> *mut c_void { fun(timer_st.evp.sigev_value); } } else if timer_st.evp.sigev_notify == SIGEV_SIGNAL { - // process_pid != 0 => process-wide delivery (used by alarm()) - // process_pid == 0 => thread-specific delivery (used by timer_create) - let result = if timer_st.process_pid != 0 { - Sys::kill(timer_st.process_pid, timer_st.evp.sigev_signo) - } else { - unsafe { Sys::rlct_kill(timer_st.caller_thread, timer_st.evp.sigev_signo as _) } - }; - if result.is_err() { + // TODO: This will deliver signal to process, which is required for alarm() + // Until it can bypass the exec() boundary, do not uncomment this code + // if timer_st.process_pid != 0 && Sys::kill(timer_st.process_pid, timer_st.evp.sigev_signo).is_err() { break; } else + if unsafe { Sys::rlct_kill(timer_st.caller_thread, timer_st.evp.sigev_signo as _) } + .is_err() + { break; } }