virtio_drivers/
embedded_io.rs1use crate::{device::socket::SocketError, Error};
4use embedded_io::ErrorKind;
5
6impl embedded_io::Error for Error {
7 fn kind(&self) -> ErrorKind {
8 match self {
9 Error::InvalidParam => ErrorKind::InvalidInput,
10 Error::DmaError => ErrorKind::OutOfMemory,
11 Error::Unsupported => ErrorKind::Unsupported,
12 Error::SocketDeviceError(e) => match e {
13 &SocketError::ConnectionExists => ErrorKind::AddrInUse,
14 SocketError::NotConnected => ErrorKind::NotConnected,
15 SocketError::PeerSocketShutdown => ErrorKind::ConnectionAborted,
16 SocketError::BufferTooShort => ErrorKind::InvalidInput,
17 SocketError::OutputBufferTooShort(_) => ErrorKind::InvalidInput,
18 SocketError::BufferTooLong(_, _) => ErrorKind::InvalidInput,
19 SocketError::InsufficientBufferSpaceInPeer => ErrorKind::WriteZero,
20 SocketError::UnknownOperation(_)
21 | SocketError::InvalidOperation
22 | SocketError::InvalidNumber
23 | SocketError::UnexpectedDataInPacket
24 | SocketError::RecycledWrongBuffer => ErrorKind::Other,
25 },
26 Error::QueueFull
27 | Error::NotReady
28 | Error::WrongToken
29 | Error::AlreadyUsed
30 | Error::IoError
31 | Error::ConfigSpaceTooSmall
32 | Error::ConfigSpaceMissing => ErrorKind::Other,
33 }
34 }
35}