lx 0.4.0

A no_std crate to use Linux system calls
Documentation
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(())
}