Skip to content

Commit a4b42e8

Browse files
committed
feat(fdt): change memory method to return iterator for multiple memory nodes
The memory method now returns an iterator instead of a single option, allowing iteration over multiple memory nodes in the device tree. This change provides better support for systems with multiple memory regions and improves the API flexibility.
1 parent 2cc24c2 commit a4b42e8

File tree

3 files changed

+9
-8
lines changed

3 files changed

+9
-8
lines changed

fdt-raw/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ name = "fdt-raw"
1111
readme = "README.md"
1212
homepage = "https://github.com/drivercraft/fdt-parser"
1313
repository = "https://github.com/drivercraft/fdt-parser"
14-
version = "0.1.3"
14+
version = "0.1.4"
1515

1616
[dependencies]
1717
heapless = "0.9"

fdt-raw/src/fdt.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -243,13 +243,14 @@ impl<'a> Fdt<'a> {
243243
None
244244
}
245245

246-
pub fn memory(&self) -> Option<Memory<'a>> {
247-
for node in self.all_nodes() {
248-
if let Node::Memory(m) = node {
249-
return Some(m);
246+
pub fn memory(&self) -> impl Iterator<Item = Memory<'a>> + 'a {
247+
self.all_nodes().filter_map(|node| {
248+
if let Node::Memory(mem) = node {
249+
Some(mem)
250+
} else {
251+
None
250252
}
251-
}
252-
None
253+
})
253254
}
254255
}
255256

fdt-raw/tests/classify.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ fn test_memory() {
2727
init_logging();
2828
let raw = fdt_qemu();
2929
let fdt = Fdt::from_bytes(&raw).unwrap();
30-
let memory = fdt.memory().unwrap();
30+
let memory = fdt.memory().next().unwrap();
3131
println!("Memory node: {:#x?}", memory);
3232
}

0 commit comments

Comments
 (0)