fdt_parser/cache/node/
memory.rs1use core::{fmt::Debug, ops::Deref};
2
3use crate::{cache::node::NodeBase, FdtError, MemoryRegion};
4use alloc::vec::Vec;
5
6#[derive(Clone)]
7pub struct Memory {
8 node: NodeBase,
9}
10
11impl Memory {
12 pub(crate) fn new(node: NodeBase) -> Self {
13 Memory { node }
14 }
15
16 pub fn regions(&self) -> Result<Vec<MemoryRegion>, FdtError> {
18 let reg = self.node.reg()?;
19 let mut out = Vec::new();
20 for r in reg {
21 out.push(MemoryRegion {
22 address: r.address as usize as _,
23 size: r.size.unwrap_or_default(),
24 });
25 }
26 Ok(out)
27 }
28}
29
30impl Debug for Memory {
31 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
32 f.debug_struct("Memory")
33 .field("name", &self.node.name())
34 .finish()
35 }
36}
37
38impl Deref for Memory {
39 type Target = NodeBase;
40
41 fn deref(&self) -> &Self::Target {
42 &self.node
43 }
44}