wasmer_wasix/syscalls/wasix/
proc_signal.rs

1use super::*;
2use crate::syscalls::*;
3
4/// ### `proc_signal()`
5/// Sends a signal to a child process
6///
7/// ## Parameters
8///
9/// * `pid` - Handle of the child process to wait on
10/// * `sig` - Signal to send the child process
11#[instrument(level = "trace", skip_all, fields(%pid, ?sig), ret)]
12pub fn proc_signal(
13    mut ctx: FunctionEnvMut<'_, WasiEnv>,
14    pid: Pid,
15    sig: Signal,
16) -> Result<Errno, WasiError> {
17    let process = {
18        let pid: WasiProcessId = pid.into();
19        ctx.data().control_plane.get_process(pid)
20    };
21    if let Some(process) = process {
22        process.signal_process(sig);
23    }
24
25    WasiEnv::do_pending_operations(&mut ctx)?;
26
27    Ok(Errno::Success)
28}