use thiserror::Error;
pub type Result<T> = core::result::Result<T, VirtioError>;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum VirtioError {
#[error(transparent)]
Memory(#[from] squib_core::Error),
#[error(transparent)]
Queue(#[from] crate::queue::QueueError),
#[error("GIC delivery failed: {0}")]
Irq(String),
#[error(transparent)]
Activate(#[from] crate::device::ActivateError),
#[error("device I/O error: {0}")]
Io(#[from] std::io::Error),
#[error("malformed payload: {0}")]
MalformedPayload(String),
#[error("invalid driver-init transition: {0}")]
InvalidTransition(&'static str),
}
impl From<squib_gic::GicError> for VirtioError {
fn from(err: squib_gic::GicError) -> Self {
Self::Irq(err.to_string())
}
}