use super::abi::*;
use crate::{
result_from_value,
AsRawFd,
Error,
EINVAL,
};
#[inline]
pub fn write(fd: &impl AsRawFd, buf: &[u8]) -> crate::Result<usize> {
let ret = unsafe { syscall_3(1, fd.as_raw_fd() as usize, buf.as_ptr() as usize, buf.len()) };
result_from_value(ret)
}
#[inline]
pub fn write_all(fd: &impl AsRawFd, buf: &[u8]) -> crate::Result<()> {
let mut n = 0;
while n < buf.len() {
let ret = write(fd, &buf[n..])?;
if ret == 0 {
return Err(Error::from_code(EINVAL));
}
n += ret;
}
Ok(())
}