mirror of https://github.com/stjepang/smol
refactor: use libc for unistd
This commit is contained in:
parent
b3358ef275
commit
b500e5ce2b
|
@ -127,7 +127,7 @@ mod linux {
|
|||
}
|
||||
|
||||
pub fn try_clone(&self) -> Result<EventFd, io::Error> {
|
||||
unistd::dup(self.0).map(EventFd).map_err(io_err)
|
||||
unistd::dup(self.0).map(EventFd)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -153,14 +153,14 @@ mod linux {
|
|||
impl Read for &EventFd {
|
||||
#[inline]
|
||||
fn read(&mut self, buf: &mut [u8]) -> std::result::Result<usize, std::io::Error> {
|
||||
unistd::read(self.0, buf).map_err(io_err)
|
||||
unistd::read(self.0, buf)
|
||||
}
|
||||
}
|
||||
|
||||
impl Write for &EventFd {
|
||||
#[inline]
|
||||
fn write(&mut self, buf: &[u8]) -> std::result::Result<usize, std::io::Error> {
|
||||
unistd::write(self.0, buf).map_err(io_err)
|
||||
unistd::write(self.0, buf)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
|
|
38
src/sys.rs
38
src/sys.rs
|
@ -5,7 +5,43 @@ pub mod eventfd {
|
|||
|
||||
#[cfg(target_os = "linux")]
|
||||
pub mod unistd {
|
||||
pub use nix::unistd::{close, dup, read, write};
|
||||
use super::check_err;
|
||||
use std::os::unix::io::RawFd;
|
||||
|
||||
pub fn close(fd: RawFd) -> Result<(), std::io::Error> {
|
||||
let res = unsafe { libc::close(fd) };
|
||||
|
||||
check_err(res).map(drop)
|
||||
}
|
||||
|
||||
pub fn dup(oldfd: RawFd) -> Result<RawFd, std::io::Error> {
|
||||
let res = unsafe { libc::dup(oldfd) };
|
||||
check_err(res)
|
||||
}
|
||||
|
||||
pub fn read(fd: RawFd, buf: &mut [u8]) -> Result<usize, std::io::Error> {
|
||||
let res = unsafe {
|
||||
libc::read(
|
||||
fd,
|
||||
buf.as_mut_ptr() as *mut libc::c_void,
|
||||
buf.len() as libc::size_t,
|
||||
)
|
||||
};
|
||||
|
||||
check_err(res as _).map(|r| r as usize)
|
||||
}
|
||||
|
||||
pub fn write(fd: RawFd, buf: &[u8]) -> Result<usize, std::io::Error> {
|
||||
let res = unsafe {
|
||||
libc::write(
|
||||
fd,
|
||||
buf.as_ptr() as *const libc::c_void,
|
||||
buf.len() as libc::size_t,
|
||||
)
|
||||
};
|
||||
|
||||
check_err(res as _).map(|r| r as usize)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
|
|
Loading…
Reference in New Issue