use core::ptr::addr_of_mut;
use crate::platform::WaitPidFlags;
use sc::syscall;
#[derive(Debug, Copy, Clone)]
pub struct WaitPidResult {
pub pid: i32,
pub status: i32,
}
pub fn wait_pid(pid: i32, flags: WaitPidFlags) -> crate::Result<WaitPidResult> {
let mut wstatus = 0i32;
let res = unsafe { syscall!(WAIT4, pid, addr_of_mut!(wstatus), flags.bits().bits(), 0) };
bail_on_below_zero!(res, "`WAIT4` syscall failed");
#[expect(clippy::cast_possible_truncation, clippy::cast_possible_wrap)]
Ok(WaitPidResult {
pid: res as i32,
status: wstatus,
})
}