#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum UserspaceSignalCode
{
Queue,
PosixMessageQueue,
PosixAsynchronousIo,
Dethread,
AsynchronousNameLookUp,
Other(NonZeroI32),
}
impl Into<i32> for UserspaceSignalCode
{
#[inline(always)]
fn into(self) -> i32
{
use self::UserspaceSignalCode::*;
match self
{
Queue => SI_QUEUE,
PosixMessageQueue => SI_MESGQ,
PosixAsynchronousIo => SI_ASYNCIO,
Dethread => SI_DETHREAD,
AsynchronousNameLookUp => SI_ASYNCNL,
Other(code) => code.get(),
}
}
}
impl UserspaceSignalCode
{
#[inline(always)]
pub(crate) fn from_si_code(si_code: i32) -> Self
{
debug_assert!(si_code < 0, "si_code is not negative");
use self::UserspaceSignalCode::*;
match si_code
{
SI_QUEUE => Queue,
SI_MESGQ => PosixMessageQueue,
SI_ASYNCIO => PosixAsynchronousIo,
SI_DETHREAD => Dethread,
SI_ASYNCNL => AsynchronousNameLookUp,
other @ _ => Other(new_non_zero_i32(other)),
}
}
}