aboutsummaryrefslogtreecommitdiff
path: root/rust/qemu-api/src
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2025-02-25 10:06:20 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2025-03-06 12:44:47 +0100
commit09fda8f5dc925ba059aca539163d16796af6a299 (patch)
tree986909c372b4d8524c0e44fe9f70c807c9d8352d /rust/qemu-api/src
parentfc22d650d54363b8f2bad56aea1dde773f600067 (diff)
downloadqemu-09fda8f5dc925ba059aca539163d16796af6a299.zip
qemu-09fda8f5dc925ba059aca539163d16796af6a299.tar.gz
qemu-09fda8f5dc925ba059aca539163d16796af6a299.tar.bz2
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>
Diffstat (limited to 'rust/qemu-api/src')
-rw-r--r--rust/qemu-api/src/sysbus.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/rust/qemu-api/src/sysbus.rs b/rust/qemu-api/src/sysbus.rs
index 48803a6..0790576 100644
--- a/rust/qemu-api/src/sysbus.rs
+++ b/rust/qemu-api/src/sysbus.rs
@@ -65,6 +65,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());
let id: i32 = id.try_into().unwrap();