* Reuse std::io::Error for raw *nix errno This commit removes custom `yanix::Errno` and instead (as was previously suggested) reuses `std::io::Error` to generate and wrap raw *nix errno value. * Update wasi-common to use new Yanix error type This commit updates `wasi-common` to use new way of handling raw OS error in `yanix`; i.e., via re-use of `std::io::Error` instead of a custom `Errno` enum. * Fix formatting * Unwrap if io::Error created from raw OS error This commit calls `unwrap` on `err` if that one was created via `io::Error::last_os_error()`. It also refactors error matching in several syscalls on the BSD platform (mainly).
23 lines
615 B
Rust
23 lines
615 B
Rust
use crate::{Error, Result};
|
|
use std::os::unix::prelude::*;
|
|
|
|
#[derive(Debug, Copy, Clone)]
|
|
#[repr(i32)]
|
|
pub enum PosixFadviseAdvice {
|
|
Normal = libc::POSIX_FADV_NORMAL,
|
|
Sequential = libc::POSIX_FADV_SEQUENTIAL,
|
|
Random = libc::POSIX_FADV_RANDOM,
|
|
NoReuse = libc::POSIX_FADV_NOREUSE,
|
|
WillNeed = libc::POSIX_FADV_WILLNEED,
|
|
DontNeed = libc::POSIX_FADV_DONTNEED,
|
|
}
|
|
|
|
pub unsafe fn posix_fadvise(
|
|
fd: RawFd,
|
|
offset: libc::off_t,
|
|
len: libc::off_t,
|
|
advice: PosixFadviseAdvice,
|
|
) -> Result<()> {
|
|
Error::from_success_code(libc::posix_fadvise(fd, offset, len, advice as libc::c_int))
|
|
}
|