[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 17/41] rust/qemu-api: Use device_class_set_props_n
From: |
Paolo Bonzini |
Subject: |
[PULL 17/41] rust/qemu-api: Use device_class_set_props_n |
Date: |
Thu, 19 Dec 2024 09:32:04 +0100 |
From: Richard Henderson <richard.henderson@linaro.org>
This means we can update declare_properties to drop the
zero terminator at the end of the array as well.
Cc: qemu-rust@nongnu.org
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Link:
20241216035109.3486070-18-richard.henderson@linaro.org">https://lore.kernel.org/r/20241216035109.3486070-18-richard.henderson@linaro.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
rust/qemu-api/src/device_class.rs | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/rust/qemu-api/src/device_class.rs
b/rust/qemu-api/src/device_class.rs
index 03d03feee83..c98f0b2c7da 100644
--- a/rust/qemu-api/src/device_class.rs
+++ b/rust/qemu-api/src/device_class.rs
@@ -7,7 +7,6 @@
use crate::{
bindings::{self, DeviceClass, DeviceState, Error, ObjectClass, Property,
VMStateDescription},
prelude::*,
- zeroable::Zeroable,
};
/// Trait providing the contents of [`DeviceClass`].
@@ -31,7 +30,7 @@ pub trait DeviceImpl {
/// device. Not a `const` because referencing statics in constants
/// is unstable until Rust 1.83.0.
fn properties() -> &'static [Property] {
- &[Zeroable::ZERO; 1]
+ &[]
}
/// A `VMStateDescription` providing the migration format for the device
@@ -87,7 +86,10 @@ fn vmsd() -> Option<&'static VMStateDescription> {
if let Some(vmsd) = <T as DeviceImpl>::vmsd() {
dc.vmsd = vmsd;
}
- bindings::device_class_set_props(dc, <T as
DeviceImpl>::properties().as_ptr());
+ let prop = <T as DeviceImpl>::properties();
+ if !prop.is_empty() {
+ bindings::device_class_set_props_n(dc, prop.as_ptr(), prop.len());
+ }
}
}
@@ -134,7 +136,7 @@ macro_rules! define_property {
macro_rules! declare_properties {
($ident:ident, $($prop:expr),*$(,)*) => {
pub static $ident: [$crate::bindings::Property; {
- let mut len = 1;
+ let mut len = 0;
$({
_ = stringify!($prop);
len += 1;
@@ -142,7 +144,6 @@ macro_rules! declare_properties {
len
}] = [
$($prop),*,
- $crate::zeroable::Zeroable::ZERO,
];
};
}
--
2.47.1
- [PULL 08/41] hw/s390x: Remove empty Property lists, (continued)
- [PULL 08/41] hw/s390x: Remove empty Property lists, Paolo Bonzini, 2024/12/19
- [PULL 09/41] hw/xen: Remove empty Property lists, Paolo Bonzini, 2024/12/19
- [PULL 10/41] hw/sparc: Remove empty Property lists, Paolo Bonzini, 2024/12/19
- [PULL 11/41] hw/virtio: Remove empty Property lists, Paolo Bonzini, 2024/12/19
- [PULL 12/41] include/hw/qdev-core: Detect most empty Property lists at compile time, Paolo Bonzini, 2024/12/19
- [PULL 07/41] hw/tricore: Remove empty Property lists, Paolo Bonzini, 2024/12/19
- [PULL 13/41] hw/core: Introduce device_class_set_props_n, Paolo Bonzini, 2024/12/19
- [PULL 15/41] hw/scsi/megasas: Use device_class_set_props_n, Paolo Bonzini, 2024/12/19
- [PULL 14/41] migration: Use device_class_set_props_n, Paolo Bonzini, 2024/12/19
- [PULL 16/41] hw/arm/armsse: Use device_class_set_props_n, Paolo Bonzini, 2024/12/19
- [PULL 17/41] rust/qemu-api: Use device_class_set_props_n,
Paolo Bonzini <=
- [PULL 18/41] hw/core: Replace device_class_set_props with a macro, Paolo Bonzini, 2024/12/19
- [PULL 19/41] target/riscv: Do not abuse DEFINE_PROP_END_OF_LIST, Paolo Bonzini, 2024/12/19
- [PULL 22/41] hw/core/qdev-properties: Constify Property argument to object_field_prop_ptr, Paolo Bonzini, 2024/12/19
- [PULL 21/41] include/hw/qdev-properties: Shrink struct Property, Paolo Bonzini, 2024/12/19
- [PULL 23/41] hw/core/qdev-properties: Constify Property argument to PropertyInfo.print, Paolo Bonzini, 2024/12/19
- [PULL 24/41] Constify all opaque Property pointers, Paolo Bonzini, 2024/12/19
- [PULL 20/41] include/hw/qdev-properties: Remove DEFINE_PROP_END_OF_LIST, Paolo Bonzini, 2024/12/19
- [PULL 26/41] rust: qom: add possibility of overriding unparent, Paolo Bonzini, 2024/12/19
- [PULL 25/41] rust: qom: put class_init together from multiple ClassInitImpl<>, Paolo Bonzini, 2024/12/19
- [PULL 27/41] rust: rename qemu-api modules to follow C code a bit more, Paolo Bonzini, 2024/12/19