Extend size of sig{en,de}queue payload.
This commit is contained in:
+11
-3
@@ -6,7 +6,7 @@ extern crate syscall;
|
||||
|
||||
use core::mem::size_of;
|
||||
|
||||
use syscall::{dirent::DirentHeader, RwFlags, EINVAL, SIGKILL};
|
||||
use syscall::{dirent::DirentHeader, RtSigInfo, RwFlags, EINVAL, SIGKILL};
|
||||
|
||||
pub use self::syscall::{
|
||||
data, error, flag, io, number, ptrace_event, EnvRegisters, FloatRegisters, IntRegisters,
|
||||
@@ -201,8 +201,16 @@ pub fn syscall(
|
||||
|
||||
SYS_EXIT => exit(b),
|
||||
SYS_KILL => kill(ProcessId::from(b), c, KillMode::Idempotent),
|
||||
SYS_SIGENQUEUE => kill(ProcessId::from(b), c, KillMode::Queued(d)),
|
||||
SYS_SIGDEQUEUE => sigdequeue(UserSlice::wo(b, 8)?, c as u32).map(|()| 0),
|
||||
SYS_SIGENQUEUE => kill(
|
||||
ProcessId::from(b),
|
||||
c,
|
||||
KillMode::Queued(unsafe {
|
||||
UserSlice::ro(d, size_of::<RtSigInfo>())?.read_exact()?
|
||||
}),
|
||||
),
|
||||
SYS_SIGDEQUEUE => {
|
||||
sigdequeue(UserSlice::wo(b, size_of::<RtSigInfo>())?, c as u32).map(|()| 0)
|
||||
}
|
||||
SYS_WAITPID => waitpid(
|
||||
ProcessId::from(b),
|
||||
if c == 0 {
|
||||
|
||||
Reference in New Issue
Block a user