| use crate::io; |
| |
| pub fn errno() -> i32 { |
| unsafe { hermit_abi::get_errno() } |
| } |
| |
| #[inline] |
| pub fn is_interrupted(errno: i32) -> bool { |
| errno == hermit_abi::errno::EINTR |
| } |
| |
| pub fn decode_error_kind(errno: i32) -> io::ErrorKind { |
| match errno { |
| hermit_abi::errno::EACCES => io::ErrorKind::PermissionDenied, |
| hermit_abi::errno::EADDRINUSE => io::ErrorKind::AddrInUse, |
| hermit_abi::errno::EADDRNOTAVAIL => io::ErrorKind::AddrNotAvailable, |
| hermit_abi::errno::EAGAIN => io::ErrorKind::WouldBlock, |
| hermit_abi::errno::ECONNABORTED => io::ErrorKind::ConnectionAborted, |
| hermit_abi::errno::ECONNREFUSED => io::ErrorKind::ConnectionRefused, |
| hermit_abi::errno::ECONNRESET => io::ErrorKind::ConnectionReset, |
| hermit_abi::errno::EEXIST => io::ErrorKind::AlreadyExists, |
| hermit_abi::errno::EINTR => io::ErrorKind::Interrupted, |
| hermit_abi::errno::EINVAL => io::ErrorKind::InvalidInput, |
| hermit_abi::errno::ENOENT => io::ErrorKind::NotFound, |
| hermit_abi::errno::ENOTCONN => io::ErrorKind::NotConnected, |
| hermit_abi::errno::EPERM => io::ErrorKind::PermissionDenied, |
| hermit_abi::errno::EPIPE => io::ErrorKind::BrokenPipe, |
| hermit_abi::errno::ETIMEDOUT => io::ErrorKind::TimedOut, |
| _ => io::ErrorKind::Uncategorized, |
| } |
| } |
| |
| pub fn error_string(errno: i32) -> String { |
| hermit_abi::error_string(errno).to_string() |
| } |