WIP: use rt signal constants from sigabi

This commit is contained in:
4lDO2
2024-07-25 19:44:43 +02:00
parent 75b2dcaa45
commit 47e07654cb
2 changed files with 16 additions and 6 deletions
+13 -5
View File
@@ -1,14 +1,14 @@
use core::{
cell::{Cell, UnsafeCell},
ffi::c_int,
sync::atomic::{AtomicUsize, Ordering},
sync::atomic::{AtomicU8, AtomicUsize, Ordering},
};
use syscall::{
data::AtomicU64, Error, RawAction, Result, SetSighandlerData, SigProcControl, Sigcontrol,
SigcontrolFlags, EINVAL, ENOMEM, EPERM, SIGABRT, SIGBUS, SIGCHLD, SIGCONT, SIGFPE, SIGILL,
SIGKILL, SIGQUIT, SIGSEGV, SIGSTOP, SIGSYS, SIGTRAP, SIGTSTP, SIGTTIN, SIGTTOU, SIGURG,
SIGWINCH, SIGXCPU, SIGXFSZ,
data::AtomicU64, Error, NonatomicUsize, RawAction, RealtimeSig, Result, SetSighandlerData,
SigProcControl, Sigcontrol, SigcontrolFlags, EINVAL, ENOMEM, EPERM, SIGABRT, SIGBUS, SIGCHLD,
SIGCONT, SIGFPE, SIGILL, SIGKILL, SIGQUIT, SIGSEGV, SIGSTOP, SIGSYS, SIGTRAP, SIGTSTP, SIGTTIN,
SIGTTOU, SIGURG, SIGWINCH, SIGXCPU, SIGXFSZ,
};
use crate::{arch::*, proc::FdGuard, sync::Mutex, RtTcb, Tcb};
@@ -443,6 +443,14 @@ pub(crate) static PROC_CONTROL_STRUCT: SigProcControl = SigProcControl {
user_data: AtomicU64::new(0),
}
}; 64],
qhead: AtomicU8::new(0),
_rsvd: [0; 7],
queue: [const {
RealtimeSig {
arg: NonatomicUsize::new(0),
}
}; 32],
qtail: AtomicU8::new(0),
};
fn combine_allowset([lo, hi]: [u64; 2]) -> u64 {
+3 -1
View File
@@ -45,7 +45,9 @@ pub fn posix_kill(pid: usize, sig: usize) -> Result<()> {
}
#[inline]
pub fn posix_sigqueue(pid: usize, sig: usize, val: usize) -> Result<()> {
match wrapper(false, || unsafe { syscall::syscall3(101, pid, sig, val) }) {
match wrapper(false, || unsafe {
syscall::syscall3(syscall::SYS_SIGQUEUE, pid, sig, val)
}) {
Ok(_) | Err(Error { errno: EINTR }) => Ok(()),
Err(error) => Err(error),
}