Skip to main content

SignalRuntime

Struct SignalRuntime 

Source
pub struct SignalRuntime;
Expand description

Utilities for process signal management.

Implementations§

Source§

impl SignalRuntime

Source

pub fn empty_set() -> SignalSet

Create an empty signal set.

Source

pub fn set_with(signals: &[i32]) -> Result<SignalSet, CoreError>

Create a signal set containing the specified signals.

§Errors
  • EINVAL: One of the signal numbers is invalid.
Source

pub fn block_current_thread(signals: &SignalSet) -> Result<SignalSet, CoreError>

Block the specified signals for the current thread and return the previous mask.

§Errors
  • EINVAL: how or signals is invalid.
Source

pub fn restore_current_thread(mask: &SignalSet) -> Result<(), CoreError>

Restore the current thread signal mask.

§Errors
  • EINVAL: mask is invalid.
Source

pub fn wait(signals: &SignalSet) -> Result<i32, CoreError>

Wait synchronously for one of the supplied signals.

§Errors
  • EINVAL: signals contains invalid signal numbers.
Source

pub fn interrupt_thread(thread: ThreadId, signal: i32) -> Result<(), CoreError>

Deliver a signal to a specific thread.

§Errors
  • EINVAL: Invalid signal number.
  • ESRCH: The thread ID is invalid or the thread has terminated.
Source

pub fn set_current_thread_mask( how: i32, signals: &SignalSet, ) -> Result<SignalSet, CoreError>

Block or unblock signals for the current thread and return the previous mask.

Source

pub fn unblock_all() -> Result<(), CoreError>

Unblock all signals for the current thread.

Source

pub fn signalfd_new(signals: &SignalSet) -> Result<Fd, CoreError>

Create a new signalfd for the specified signal set.

The descriptor is created with SFD_CLOEXEC and SFD_NONBLOCK set. Callers are responsible for blocking the signals in the set before reading from the signalfd.

§Fork Safety

The descriptor is O_CLOEXEC and will be closed in the child after exec.

§Errors
  • EINVAL: signals is invalid.
  • EMFILE: Process limit on open file descriptors hit.
  • ENFILE: System-wide limit on open files hit.
§Example
let signals = SignalRuntime::set_with(&[SIGUSR1]).unwrap();
SignalRuntime::block_current_thread(&signals).unwrap();
let sfd = SignalRuntime::signalfd_new(&signals).unwrap();
Source

pub fn register_handler( sig: i32, handler: extern "C" fn(i32), ) -> Result<sigaction, CoreError>

Register a process-wide handler for a single signal.

This is a low-level wrapper around sigaction(2).

§Fork Safety

Signal handlers are inherited across fork.

§Errors
  • EINVAL: Invalid signal number.
§Example
extern "C" fn handler(_: i32) {}
SignalRuntime::register_handler(SIGUSR1, handler).unwrap();
Source

pub fn reset_default(sig: i32) -> Result<(), CoreError>

Reset a signal to its default kernel handler.

§Errors
  • EINVAL: Invalid signal number.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.