/// Sychronous I/O multiplexing.
pub unsafe fn select_nocancel(
nfds: i32,
readfds: *mut u32,
writefds: *mut u32,
exceptfds: *mut u32,
timeout: &mut timeval_t,
) -> Result<i32, Errno> {
let nfds = nfds as usize;
let readfds_ptr = readfds as usize;
let writefds_ptr = writefds as usize;
let exceptfds_ptr = exceptfds as usize;
let timeout_ptr = core::ptr::from_mut(timeout) as usize;
unsafe {
syscall5(
SYS_SELECT_NOCANCEL,
nfds,
readfds_ptr,
writefds_ptr,
exceptfds_ptr,
timeout_ptr,
)
.map(|ret| ret as i32)
}
}