mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-19 14:08:39 -07:00
The existing translation of the C macros for vmstate does not make any attempt to type-check vmstate declarations against the struct, so introduce a new system that computes VMStateField based on the actual struct declaration. Macros do not have full access to the type system, therefore a full implementation of this scheme requires a helper trait to analyze the type and produce a VMStateField from it; a macro "vmstate_of!" accepts arguments similar to "offset_of!" and tricks the compiler into looking up the trait for the right type. The patch introduces not just vmstate_of!, but also the slightly too clever enabling macro call_func_with_field!. The particular trick used here was proposed on the users.rust-lang.org forum, so I take no merit and all the blame. Introduce the trait and some functions to access it; the actual implementation comes later. Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 lines
552 B
Rust
22 lines
552 B
Rust
// Copyright 2024 Red Hat, Inc.
|
|
// Author(s): Paolo Bonzini <pbonzini@redhat.com>
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
pub use crate::bitops::IntegerExt;
|
|
|
|
pub use crate::cell::BqlCell;
|
|
pub use crate::cell::BqlRefCell;
|
|
|
|
pub use crate::qom::IsA;
|
|
pub use crate::qom::Object;
|
|
pub use crate::qom::ObjectCast;
|
|
pub use crate::qom::ObjectCastMut;
|
|
pub use crate::qom::ObjectDeref;
|
|
pub use crate::qom::ObjectMethods;
|
|
pub use crate::qom::ObjectType;
|
|
|
|
pub use crate::qom_isa;
|
|
|
|
pub use crate::sysbus::SysBusDeviceMethods;
|
|
|
|
pub use crate::vmstate::VMState;
|