aboutsummaryrefslogtreecommitdiff
path: root/rust/qemu-api/src/sysbus.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rust/qemu-api/src/sysbus.rs')
-rw-r--r--rust/qemu-api/src/sysbus.rs18
1 files changed, 17 insertions, 1 deletions
diff --git a/rust/qemu-api/src/sysbus.rs b/rust/qemu-api/src/sysbus.rs
index 5ee0685..5d15b31 100644
--- a/rust/qemu-api/src/sysbus.rs
+++ b/rust/qemu-api/src/sysbus.rs
@@ -6,7 +6,13 @@ use std::{ffi::CStr, ptr::addr_of};
pub use bindings::{SysBusDevice, SysBusDeviceClass};
-use crate::{bindings, cell::bql_locked, irq::InterruptSource, prelude::*};
+use crate::{
+ bindings::{self, DeviceClass},
+ cell::bql_locked,
+ definitions::ClassInitImpl,
+ irq::InterruptSource,
+ prelude::*,
+};
unsafe impl ObjectType for SysBusDevice {
type Class = SysBusDeviceClass;
@@ -14,6 +20,16 @@ unsafe impl ObjectType for SysBusDevice {
unsafe { CStr::from_bytes_with_nul_unchecked(bindings::TYPE_SYS_BUS_DEVICE) };
}
+// TODO: add SysBusDeviceImpl
+impl<T> ClassInitImpl<SysBusDeviceClass> for T
+where
+ T: ClassInitImpl<DeviceClass>,
+{
+ fn class_init(sdc: &mut SysBusDeviceClass) {
+ <T as ClassInitImpl<DeviceClass>>::class_init(&mut sdc.parent_class);
+ }
+}
+
impl SysBusDevice {
/// Return `self` cast to a mutable pointer, for use in calls to C code.
const fn as_mut_ptr(&self) -> *mut SysBusDevice {