rust: qdev: expose inherited methods to subclasses of SysBusDevice

The ObjectDeref trait now provides all the magic that is required to fake
inheritance.  Replace the "impl SysBusDevice" block of qemu_api::sysbus
with a trait, so that sysbus_init_irq() can be invoked as "self.init_irq()"
without any intermediate upcast.

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2024-11-29 10:46:44 +01:00
parent 809c703a60
commit 559a779c6a
4 changed files with 14 additions and 14 deletions

View file

@ -207,11 +207,9 @@ impl PL011State {
}
fn post_init(&self) {
let sbd: &SysBusDevice = self.upcast();
sbd.init_mmio(&self.iomem);
self.init_mmio(&self.iomem);
for irq in self.interrupts.iter() {
sbd.init_irq(irq);
self.init_irq(irq);
}
}