pub unsafe fn rt_sigaction(
sig: i32,
act: Option<&sigaction_t>,
old_act: Option<&mut sigaction_t>,
) -> Result<(), Errno> {
let sig = sig as usize;
let act_ptr = act.map_or(core::ptr::null::<sigaction_t>() as usize, |act| {
act as *const sigaction_t as usize
});
let old_act_ptr = old_act.map_or(core::ptr::null_mut::<sigaction_t>() as usize, |old_act| {
old_act as *mut sigaction_t as usize
});
let sigset_size = core::mem::size_of::<sigset_t>();
syscall4(SYS_RT_SIGACTION, sig, act_ptr, old_act_ptr, sigset_size).map(drop)
}