diff --git a/kernel/process/process.rs b/kernel/process/process.rs index 70ce7969..3f56b4c5 100644 --- a/kernel/process/process.rs +++ b/kernel/process/process.rs @@ -15,7 +15,7 @@ use crate::{ elf::{Elf, ProgramHeader}, init_stack::{estimate_user_init_stack_size, init_user_stack, Auxv}, process_group::{PgId, ProcessGroup}, - signal::{SigAction, Signal, SignalDelivery, SignalMask, SIGCHLD, SIGKILL}, + signal::{SigAction, SigSet, Signal, SignalDelivery, SignalMask, SIGCHLD, SIGKILL}, switch, UserVAddr, JOIN_WAIT_QUEUE, SCHEDULER, }, random::read_secure_random, @@ -38,8 +38,6 @@ use kerla_runtime::{ }; use kerla_utils::{alignment::align_up, bitmap::BitMap}; -use super::signal::SigSet; - type ProcessTable = BTreeMap>; /// The process table. All processes are registered in with its process Id. diff --git a/kernel/syscalls/rt_sigprocmask.rs b/kernel/syscalls/rt_sigprocmask.rs index 40f29437..7c3aae5f 100644 --- a/kernel/syscalls/rt_sigprocmask.rs +++ b/kernel/syscalls/rt_sigprocmask.rs @@ -13,10 +13,10 @@ impl SyscallHandler<'_> { oldset: Option, length: usize, ) -> Result { - if length != 8{ + if length != 8 { debug_warn!("sys_rt_sigprocmask length argument is not equal 8"); } - + let how = match how { 0 => SignalMask::Block, 1 => SignalMask::Unblock, @@ -24,9 +24,7 @@ impl SyscallHandler<'_> { _ => return Err(Errno::EINVAL.into()), }; - if let Err(_) = current_process().set_signal_mask(how, set, oldset, length) { - return Err(Errno::EFAULT.into()); - } + current_process().set_signal_mask(how, set, oldset, length)?; Ok(0) }