parent
4aeab4e987
commit
504dcaad59
@ -1,67 +0,0 @@
|
||||
//! `NcSigSet`
|
||||
|
||||
use crate::NcIntResult;
|
||||
|
||||
/// A wrapper over
|
||||
/// [sigset_t](https://www.gnu.org/software/libc/manual/html_node/Signal-Sets.html).
|
||||
//
|
||||
// Expected by [`notcurses_getc`], [`notcurses_getc_nblock`],
|
||||
// [`ncdirect_getc`] & [`ncdirect_getc_nblock`], that can't use libc::sigset_t
|
||||
pub type NcSignalSet = crate::bindings::ffi::sigset_t;
|
||||
|
||||
impl NcSignalSet {
|
||||
/// New NcSignalSet.
|
||||
pub fn new() -> Self {
|
||||
// https://github.com/dankamongmen/notcurses/issues/1339
|
||||
#[cfg(any(target_arch = "armv7l", target_arch = "i686"))]
|
||||
return Self { __val: [0; 32] };
|
||||
#[cfg(not(any(target_arch = "armv7l", target_arch = "i686")))]
|
||||
return Self { __val: [0; 16] };
|
||||
}
|
||||
|
||||
/// Adds `signum` to this set.
|
||||
pub fn addset(&mut self, signum: i32) -> NcIntResult {
|
||||
unsafe { crate::bindings::ffi::sigaddset(self, signum) }
|
||||
}
|
||||
|
||||
/// Removes `signum` from this set.
|
||||
pub fn delset(&mut self, signum: i32) -> NcIntResult {
|
||||
unsafe { crate::bindings::ffi::sigdelset(self, signum) }
|
||||
}
|
||||
|
||||
/// Clears all signals from this set.
|
||||
pub fn emptyset(&mut self) -> NcIntResult {
|
||||
unsafe { crate::bindings::ffi::sigemptyset(self) }
|
||||
}
|
||||
|
||||
/// Sets all signals in this set.
|
||||
pub fn fillset(&mut self) -> NcIntResult {
|
||||
unsafe { crate::bindings::ffi::sigfillset(self) }
|
||||
}
|
||||
|
||||
/// Is `signum` a member of this set?
|
||||
pub fn ismember(&self, signum: i32) -> bool {
|
||||
if unsafe { crate::bindings::ffi::sigismember(self, signum) } == 1 {
|
||||
return true;
|
||||
}
|
||||
false
|
||||
}
|
||||
|
||||
/// Puts in this set all signals that are blocked and waiting to be delivered.
|
||||
pub fn pending(&mut self) -> NcIntResult {
|
||||
unsafe { crate::bindings::ffi::sigpending(self) }
|
||||
}
|
||||
|
||||
/// Gets and/or changes the set of blocked signals.
|
||||
//
|
||||
// https://linux.die.net/man/2/sigprocmask
|
||||
pub fn procmask(how: i32, set: &NcSignalSet, old_set: &mut NcSignalSet) -> NcIntResult {
|
||||
unsafe { crate::bindings::ffi::sigprocmask(how, set, old_set) }
|
||||
}
|
||||
|
||||
/// Changes the set of blocked signals to the ones in this set,
|
||||
/// waits until a signal arrives, and restores the set of blocked signals.
|
||||
pub fn suspend(&self) -> NcIntResult {
|
||||
unsafe { crate::bindings::ffi::sigsuspend(self) }
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue