qemu-rust.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Zhao Liu <zhao1.liu@intel.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-devel@nongnu.org, qemu-rust@nongnu.org,
	Zhao Liu <zhao1.liu@intel.com>
Subject: [PATCH 04/17] rust/vmstate: Use ident instead of expr to parse vmsd in vmstate_struct macro
Date: Mon, 17 Mar 2025 23:12:23 +0800	[thread overview]
Message-ID: <20250317151236.536673-5-zhao1.liu@intel.com> (raw)
In-Reply-To: <20250317151236.536673-1-zhao1.liu@intel.com>

When specify an array field in vmstate_struct macro, there will be an
error:

> local ambiguity when calling macro `vmstate_struct`: multiple parsing
> options: built-in NTs expr ('vmsd') or 1 other option.

This is because "expr" can't recognize the "vmsd" field correctly, so
that it gets confused with the previous array field.

To fix the above issue, use "ident" for "vmsd" field, and explicitly
refer to it in the macro.

Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
 rust/hw/char/pl011/src/device_class.rs | 2 +-
 rust/qemu-api/src/vmstate.rs           | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/rust/hw/char/pl011/src/device_class.rs b/rust/hw/char/pl011/src/device_class.rs
index 0b2076ddaa0f..e43a5d6cd063 100644
--- a/rust/hw/char/pl011/src/device_class.rs
+++ b/rust/hw/char/pl011/src/device_class.rs
@@ -72,7 +72,7 @@ extern "C" fn pl011_post_load(opaque: *mut c_void, version_id: c_int) -> c_int {
     post_load: Some(pl011_post_load),
     fields: vmstate_fields! {
         vmstate_unused!(core::mem::size_of::<u32>()),
-        vmstate_struct!(PL011State, regs, &VMSTATE_PL011_REGS, BqlRefCell<PL011Registers>),
+        vmstate_struct!(PL011State, regs, VMSTATE_PL011_REGS, BqlRefCell<PL011Registers>),
     },
     subsections: vmstate_subsections! {
         VMSTATE_PL011_CLOCK
diff --git a/rust/qemu-api/src/vmstate.rs b/rust/qemu-api/src/vmstate.rs
index 94efbd8bb735..3f95d4825149 100644
--- a/rust/qemu-api/src/vmstate.rs
+++ b/rust/qemu-api/src/vmstate.rs
@@ -435,7 +435,7 @@ macro_rules! vmstate_unused {
 #[doc(alias = "VMSTATE_STRUCT")]
 #[macro_export]
 macro_rules! vmstate_struct {
-    ($struct_name:ty, $field_name:ident $(, [0 .. $num:ident $(* $factor:expr)?])?, $vmsd:expr, $type:ty $(,)?) => {
+    ($struct_name:ty, $field_name:ident $(, [0 .. $num:ident $(* $factor:expr)?])?, $vmsd:ident, $type:ty $(,)?) => {
         $crate::bindings::VMStateField {
             name: ::core::concat!(::core::stringify!($field_name), "\0")
                 .as_bytes()
@@ -447,7 +447,7 @@ macro_rules! vmstate_struct {
             },
             size: ::core::mem::size_of::<$type>(),
             flags: $crate::bindings::VMStateFlags::VMS_STRUCT,
-            vmsd: $vmsd,
+            vmsd: &$vmsd,
             ..$crate::zeroable::Zeroable::ZERO $(
                 .with_varray_flag($crate::call_func_with_field!(
                     $crate::vmstate::vmstate_varray_flag,
-- 
2.34.1



  parent reply	other threads:[~2025-03-17 14:53 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-17 15:12 [PATCH 00/17] rust/vmstate: Clean up, fix, enhance & test Zhao Liu
2025-03-17 15:12 ` [PATCH 01/17] rust/vmstate: Remove unnecessary unsafe Zhao Liu
2025-03-17 15:12 ` [PATCH 02/17] rust/vmstate: Fix num_offset in vmstate macros Zhao Liu
2025-03-17 15:12 ` [PATCH 03/17] rust/vmstate: Add a prefix separator ", " for the array field " Zhao Liu
2025-03-17 16:37   ` Paolo Bonzini
2025-03-18  2:41     ` Zhao Liu
2025-03-17 15:12 ` Zhao Liu [this message]
2025-03-17 17:17   ` [PATCH 04/17] rust/vmstate: Use ident instead of expr to parse vmsd in vmstate_struct macro Paolo Bonzini
2025-03-18  2:46     ` Zhao Liu
2025-03-18  6:14       ` Zhao Liu
2025-03-17 15:12 ` [PATCH 05/17] rust/vmstate: Fix num field when varray flags are set Zhao Liu
2025-03-17 15:12 ` [PATCH 06/17] rust/vmstate: Fix size field of VMStateField with VMS_ARRAY_OF_POINTER flag Zhao Liu
2025-03-17 15:12 ` [PATCH 07/17] rust/vmstate: Fix type check for varray in vmstate_struct Zhao Liu
2025-03-17 15:12 ` [PATCH 08/17] rust/vmstate: Fix "cannot infer type" error " Zhao Liu
2025-03-17 15:12 ` [PATCH 09/17] rust/vmstate: Fix unnecessary VMState bound of with_varray_flag() Zhao Liu
2025-03-17 15:12 ` [PATCH 10/17] rust/vmstate: Relax array check when build varray in vmstate_struct Zhao Liu
2025-03-17 15:12 ` [PATCH 11/17] rust/vmstate: Re-implement VMState trait for timer binding Zhao Liu
2025-03-17 15:12 ` [PATCH 12/17] rust/vmstate: Support version field in vmstate macros Zhao Liu
2025-03-17 16:38   ` Paolo Bonzini
2025-03-18  3:08     ` Zhao Liu
2025-03-17 15:12 ` [PATCH 13/17] rust/vmstate: Support vmstate_validate Zhao Liu
2025-03-17 17:18   ` Paolo Bonzini
2025-03-18  6:36     ` Zhao Liu
2025-03-18  6:34       ` Paolo Bonzini
2025-03-18  7:20         ` Zhao Liu
2025-03-17 15:12 ` [PATCH 14/17] rust/vmstate: Add unit test for vmstate_of macro Zhao Liu
2025-03-17 17:11   ` Paolo Bonzini
2025-03-18  6:45     ` Zhao Liu
2025-03-17 15:12 ` [PATCH 15/17] rust/vmstate: Add unit test for vmstate_{of|struct} macro Zhao Liu
2025-03-17 15:12 ` [PATCH 16/17] rust/vmstate: Add unit test for pointer case Zhao Liu
2025-03-17 15:12 ` [PATCH 17/17] rust/vmstate: Add unit test for vmstate_validate Zhao Liu
2025-03-17 17:20 ` [PATCH 00/17] rust/vmstate: Clean up, fix, enhance & test Paolo Bonzini
2025-03-18  6:49   ` Zhao Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250317151236.536673-5-zhao1.liu@intel.com \
    --to=zhao1.liu@intel.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-rust@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).