Skip to content

Commit b8c2da9

Browse files
authored
Merge pull request #2 from YdrMaster/main
fix: 修正 NodeSeq 迭代时对名字的分界错误
2 parents 114679a + 32d677e commit b8c2da9

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

examples/qemu-virt.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ fn main() -> Result<(), Error> {
4444
chosen: Option<Chosen<'a>>,
4545
cpus: Cpus<'a>,
4646
memory: NodeSeq<'a>,
47+
soc: Soc<'a>,
4748
}
4849

4950
#[derive(Deserialize)]
@@ -77,6 +78,16 @@ fn main() -> Result<(), Error> {
7778
reg: Reg<'a>,
7879
}
7980

81+
#[derive(Deserialize)]
82+
struct Soc<'a> {
83+
virtio_mmio: NodeSeq<'a>,
84+
}
85+
86+
#[derive(Deserialize)]
87+
struct VirtIoMmio<'a> {
88+
reg: Reg<'a>,
89+
}
90+
8091
{
8192
// 解析!
8293
let t: Tree = from_raw_mut(&dtb).unwrap();
@@ -107,6 +118,12 @@ fn main() -> Result<(), Error> {
107118
mem.reg
108119
);
109120
}
121+
122+
for peripheral in t.soc.virtio_mmio.iter() {
123+
let virtio_mmio: VirtIoMmio = peripheral.deserialize();
124+
println!("virtio_mmio@{}: {:?}", peripheral.at(), virtio_mmio.reg);
125+
}
126+
110127
// 解析过程中,设备树的内容被修改了。
111128
// 因此若要以其他方式再次访问设备树,先将这次解析的结果释放。
112129
assert_ne!(slice, DEVICE_TREE);

src/de_mut/cursor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ impl GroupCursor {
174174
let bytes = structure[self.0 + 1].lead_slice(len_name);
175175
(
176176
bytes,
177-
AnyCursor(self.0 + 1 + align(len_name, BLOCK_LEN), PhantomData),
177+
AnyCursor(self.0 + 1 + align(len_name + 1, BLOCK_LEN), PhantomData),
178178
)
179179
}
180180

0 commit comments

Comments
 (0)