On Thu, Feb 27, 2025 at 03:22:17PM +0100, Paolo Bonzini wrote:
> Date: Thu, 27 Feb 2025 15:22:17 +0100
> From: Paolo Bonzini <pbonz...@redhat.com>
> Subject: [PATCH 10/12] rust: memory: wrap MemoryRegion with Opaque<>
> X-Mailer: git-send-email 2.48.1
> 
> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
> ---
>  rust/qemu-api/src/bindings.rs |  3 ---
>  rust/qemu-api/src/memory.rs   | 35 +++++++++++++++++++++--------------
>  2 files changed, 21 insertions(+), 17 deletions(-)

...

>  impl MemoryRegion {
>      // inline to ensure that it is not included in tests, which only
> @@ -174,13 +174,20 @@ pub fn init_io<T: IsA<Object>>(
>          size: u64,
>      ) {
>          unsafe {
> -            Self::do_init_io(&mut self.inner, owner.cast::<Object>(), 
> &ops.0, name, size);
> +            Self::do_init_io(
> +                // self.0.as_mut_ptr() needed because Rust tries to call
> +                // ObjectDeref::as_mut_ptr() on "&mut Self", instead of 
> coercing
> +                // to "&Self" and then calling MemoryRegion::as_mut_ptr().
> +                // Revisit if/when ObjectCastMut is not needed anymore; it is
> +                // only used in a couple places for initialization.
> +                self.0.as_mut_ptr(),
> +                owner.cast::<Object>(),
> +                &ops.0,
> +                name,
> +                size,
> +            );
>          }
>      }

The extra comment is nice, too. :-)

Reviewed-by: Zhao Liu <zhao1....@intel.com>


Reply via email to