pub type Result<T> = core::result::Result<T, Error>;
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum Error {
BadMagic,
BadPtr,
BadCell,
BadCellSize(usize),
BadPropTag((u32, u32)),
BufferTooSmall,
CpuNoReg,
CpuNoClockHz,
CpuNoTimebaseHz,
MappedNoEffectiveAddr,
MappedNoPhysicalAddr,
MappedNoSize,
MemoryNoInitialMapped,
MissingProperty,
MissingRoot,
MissingChosen,
MissingMemory,
}
impl core::fmt::Display for Error {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
Error::BadMagic => write!(f, "bad FDT magic value"),
Error::BadPtr => write!(f, "an invalid pointer was passed"),
Error::BadCellSize(cell) => write!(f, "cells of size {cell} are currently unsupported"),
Error::BadPropTag((have, exp)) => {
write!(f, "invalid property tag, have: {have}, expected: {exp}")
}
Error::BadCell => write!(f, "error parsing the property cell value"),
Error::BufferTooSmall => {
write!(f, "the given buffer was too small to contain a FDT header")
}
Error::CpuNoReg => {
write!(f, "`reg` is a required property of `cpu` nodes")
}
Error::CpuNoClockHz => {
write!(f, "`clock-frequency` is a required property of `cpu` nodes")
}
Error::CpuNoTimebaseHz => {
write!(f, "`timebase-frequency` is a required property of `cpu` nodes")
}
Error::MappedNoEffectiveAddr => {
write!(f, "`mapped-area` property is missing effective address value")
}
Error::MappedNoPhysicalAddr => {
write!(f, "`mapped-area` property is missing physical address value")
}
Error::MappedNoSize => {
write!(f, "`mapped-area` property is missing size value")
}
Error::MemoryNoInitialMapped => {
write!(f, "`memory` node is missing an `initial-mapped-area` property")
}
Error::MissingProperty => write!(f, "node is missing a property entry"),
Error::MissingRoot => write!(f, "missing `root` node"),
Error::MissingChosen => write!(f, "missing `chosen` node"),
Error::MissingMemory => write!(f, "missing `memory` node"),
}
}
}
impl From<Error> for core::fmt::Error {
fn from(_: Error) -> Self {
Self
}
}