relibc/platform/pal/signal.rs
1use super::super::{
2 Pal,
3 types::{c_int, pid_t},
4};
5#[allow(deprecated)]
6use crate::header::sys_time::itimerval;
7use crate::{
8 error::{Errno, Result},
9 header::{
10 bits_sigset_t::sigset_t,
11 signal::{sigaction, siginfo_t, sigval, stack_t},
12 time::timespec,
13 },
14};
15
16/// Platform abstraction of signal-related functionality.
17pub trait PalSignal: Pal {
18 /// Platform implementation of [`getitimer()`](crate::header::sys_time::getitimer) from [`sys/time.h`](crate::header::sys_time).
19 #[allow(deprecated)]
20 fn getitimer(which: c_int, out: &mut itimerval) -> Result<()>;
21
22 /// Platform implementation of [`kill()`](crate::header::signal::kill) from [`signal.h`](crate::header::signal).
23 fn kill(pid: pid_t, sig: c_int) -> Result<()>;
24
25 /// Platform implementation of [`sigqueue()`](crate::header::signal::sigqueue) from [`signal.h`](crate::header::signal).
26 fn sigqueue(pid: pid_t, sig: c_int, val: sigval) -> Result<()>;
27
28 /// Platform implementation of [`killpg()`](crate::header::signal::killpg) from [`signal.h`](crate::header::signal).
29 fn killpg(pgrp: pid_t, sig: c_int) -> Result<()>;
30
31 /// Platform implementation of [`raise()`](crate::header::signal::raise) from [`signal.h`](crate::header::signal).
32 fn raise(sig: c_int) -> Result<()>;
33
34 /// Platform implementation of [`setitimer()`](crate::header::sys_time::setitimer) from [`sys/time.h`](crate::header::sys_time).
35 #[allow(deprecated)]
36 fn setitimer(which: c_int, new: &itimerval, old: Option<&mut itimerval>) -> Result<()>;
37
38 /// Platform implementation of [`sigaction()`](crate::header::signal::sigaction()) from [`signal.h`](crate::header::signal).
39 fn sigaction(sig: c_int, act: Option<&sigaction>, oact: Option<&mut sigaction>) -> Result<()>;
40
41 /// Platform implementation of [`sigaltstack()`](crate::header::signal::sigaltstack()) from [`signal.h`](crate::header::signal).
42 unsafe fn sigaltstack(ss: Option<&stack_t>, old_ss: Option<&mut stack_t>) -> Result<()>;
43
44 /// Platform implementation of [`sigpending()`](crate::header::signal::sigpending) from [`signal.h`](crate::header::signal).
45 fn sigpending(set: &mut sigset_t) -> Result<()>;
46
47 /// Platform implementation of [`sigprocmask()`](crate::header::signal::sigprocmask) from [`signal.h`](crate::header::signal).
48 fn sigprocmask(how: c_int, set: Option<&sigset_t>, oset: Option<&mut sigset_t>) -> Result<()>;
49
50 /// Platform implementation of [`sigsuspend()`](crate::header::signal::sigsuspend) from [`signal.h`](crate::header::signal).
51 fn sigsuspend(mask: &sigset_t) -> Errno; // always fails
52
53 /// Platform implementation of [`sigtimedwait()`](crate::header::signal::sigtimedwait) from [`signal.h`](crate::header::signal).
54 fn sigtimedwait(
55 set: &sigset_t,
56 sig: Option<&mut siginfo_t>,
57 tp: Option<×pec>,
58 ) -> Result<c_int>;
59}