wasmer_wasix/syscalls/wasix/
proc_parent.rs1use super::*;
2use crate::syscalls::*;
3
4#[instrument(level = "trace", skip_all, fields(%pid, parent = field::Empty), ret)]
7pub fn proc_parent<M: MemorySize>(
8 ctx: FunctionEnvMut<'_, WasiEnv>,
9 pid: Pid,
10 ret_parent: WasmPtr<Pid, M>,
11) -> Errno {
12 let env = ctx.data();
13 let pid: WasiProcessId = pid.into();
14 if pid == env.process.pid() {
15 let memory = unsafe { env.memory_view(&ctx) };
16 Span::current().record("parent", env.process.ppid().raw());
17 wasi_try_mem!(ret_parent.write(&memory, env.process.ppid().raw() as Pid));
18 Errno::Success
19 } else if let Some(process) = env.control_plane.get_process(pid) {
20 let memory = unsafe { env.memory_view(&ctx) };
21 Span::current().record("parent", process.pid().raw());
22 wasi_try_mem!(ret_parent.write(&memory, process.pid().raw() as Pid));
23 Errno::Success
24 } else {
25 Errno::Badf
26 }
27}