mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 07:13:54 -06:00
rust: vmstate: implement Zeroable for VMStateField
This shortens a bit the constants. Do not bother using it in the vmstate macros since most of them will go away soon. Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
5b024b4e73
commit
2537f83098
2 changed files with 34 additions and 15 deletions
|
@ -21,8 +21,8 @@
|
||||||
|
|
||||||
use core::{marker::PhantomData, mem, ptr::NonNull};
|
use core::{marker::PhantomData, mem, ptr::NonNull};
|
||||||
|
|
||||||
use crate::bindings::VMStateFlags;
|
|
||||||
pub use crate::bindings::{VMStateDescription, VMStateField};
|
pub use crate::bindings::{VMStateDescription, VMStateField};
|
||||||
|
use crate::bindings::VMStateFlags;
|
||||||
|
|
||||||
/// This macro is used to call a function with a generic argument bound
|
/// This macro is used to call a function with a generic argument bound
|
||||||
/// to the type of a field. The function must take a
|
/// to the type of a field. The function must take a
|
||||||
|
@ -503,20 +503,8 @@ macro_rules! vmstate_fields {
|
||||||
static _FIELDS: &[$crate::bindings::VMStateField] = &[
|
static _FIELDS: &[$crate::bindings::VMStateField] = &[
|
||||||
$($field),*,
|
$($field),*,
|
||||||
$crate::bindings::VMStateField {
|
$crate::bindings::VMStateField {
|
||||||
name: ::core::ptr::null(),
|
flags: $crate::bindings::VMStateFlags::VMS_END,
|
||||||
err_hint: ::core::ptr::null(),
|
..$crate::zeroable::Zeroable::ZERO
|
||||||
offset: 0,
|
|
||||||
size: 0,
|
|
||||||
start: 0,
|
|
||||||
num: 0,
|
|
||||||
num_offset: 0,
|
|
||||||
size_offset: 0,
|
|
||||||
info: ::core::ptr::null(),
|
|
||||||
flags: VMStateFlags::VMS_END,
|
|
||||||
vmsd: ::core::ptr::null(),
|
|
||||||
version_id: 0,
|
|
||||||
struct_version_id: 0,
|
|
||||||
field_exists: None,
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
_FIELDS.as_ptr()
|
_FIELDS.as_ptr()
|
||||||
|
|
|
@ -49,6 +49,37 @@ unsafe impl Zeroable for crate::bindings::Property {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// bindgen does not derive Default here
|
||||||
|
#[allow(clippy::derivable_impls)]
|
||||||
|
impl Default for crate::bindings::VMStateFlags {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
unsafe impl Zeroable for crate::bindings::VMStateFlags {
|
||||||
|
const ZERO: Self = Self(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsafe impl Zeroable for crate::bindings::VMStateField {
|
||||||
|
const ZERO: Self = Self {
|
||||||
|
name: ptr::null(),
|
||||||
|
err_hint: ptr::null(),
|
||||||
|
offset: 0,
|
||||||
|
size: 0,
|
||||||
|
start: 0,
|
||||||
|
num: 0,
|
||||||
|
num_offset: 0,
|
||||||
|
size_offset: 0,
|
||||||
|
info: ptr::null(),
|
||||||
|
flags: Zeroable::ZERO,
|
||||||
|
vmsd: ptr::null(),
|
||||||
|
version_id: 0,
|
||||||
|
struct_version_id: 0,
|
||||||
|
field_exists: None,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
unsafe impl Zeroable for crate::bindings::VMStateDescription {
|
unsafe impl Zeroable for crate::bindings::VMStateDescription {
|
||||||
const ZERO: Self = Self {
|
const ZERO: Self = Self {
|
||||||
name: ptr::null(),
|
name: ptr::null(),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue