On Sat, Oct 25, 2025 at 12:38:49PM +0000, chenmiao wrote:
> Date: Sat, 25 Oct 2025 12:38:49 +0000
> From: chenmiao <[email protected]>
> Subject: [RFC 1/5] rust: hw: core: Add the BusState of rust version
> X-Mailer: git-send-email 2.43.0
> 
> A Rust version implementation has been designed for BusState,
> which will be used for the subsequent I2CBus implementation.
> 
> Signed-off-by: chenmiao <[email protected]>
> ---
>  rust/hw/core/meson.build |  1 +
>  rust/hw/core/src/bus.rs  | 51 ++++++++++++++++++++++++++++++++++++++++
>  rust/hw/core/src/lib.rs  |  3 +++
>  3 files changed, 55 insertions(+)
>  create mode 100644 rust/hw/core/src/bus.rs

After a quick glance, I think this BusState is implemented quite well.

Only a few minor nits inline:

...

> +pub trait BusStateImpl: DeviceImpl + IsA<BusState> {}
> +
> +impl BusClass {
> +    pub fn class_init<T: BusStateImpl>(self: &mut BusClass) {
> +        self.parent_class.class_init::<T>();
> +    }
> +}
> +
> +pub trait BusStateMethods: ObjectDeref

This can be named BusMethods - just like DeviceMethods did.

> +where
> +    Self::Target: IsA<BusState>,
> +{
> +    fn bus_realize(&self) {

"bus_" prefix is not needed:

dummy_bus.realize() is clear and enough.

> +        assert!(bql::is_locked());

It's better to add safety comment from beginning (// SAFETY: xxx).

> +        unsafe {
> +            bindings::qbus_realize(
> +                self.upcast().as_mut_ptr(),
> +                addr_of_mut!(util::bindings::error_fatal),
> +            );
> +        }
> +    }
> +}

Regards,
Zhao



Reply via email to