rust: hpet: do not access fields of SysBusDevice

Fields of SysBusDevice must only be accessed with the BQL taken.  Add
a wrapper that verifies that.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2025-02-25 10:06:20 +01:00
parent fc22d650d5
commit 09fda8f5dc
2 changed files with 13 additions and 3 deletions

View file

@ -64,6 +64,18 @@ where
}
}
// TODO: do we want a type like GuestAddress here?
fn mmio_addr(&self, id: u32) -> Option<u64> {
assert!(bql_locked());
let sbd = self.upcast();
let id: usize = id.try_into().unwrap();
if sbd.mmio[id].memory.is_null() {
None
} else {
Some(sbd.mmio[id].addr)
}
}
// TODO: do we want a type like GuestAddress here?
fn mmio_map(&self, id: u32, addr: u64) {
assert!(bql_locked());