|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v7 55/65] qdev: convert system PropertyInfo definitions to use qapi_type
Replace .type string and .enum_table pointer with .qapi_type in all
PropertyInfo definitions in qdev-properties-system.c
Update file-private enum accessor functions to use .qapi_type->lookup
instead of .enum_table.
Note, this should be a faithful conversion, but it would be worth to
consider better types than just "str" for references (block node names,
chardev/netdev IDs, MAC addrs, etc)
Signed-off-by: Markus Armbruster <armbru@xxxxxxxxxx>
Signed-off-by: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx>
---
hw/core/qdev-prop-internal.h | 2 +
hw/core/qdev-properties-system.c | 93 +++++++++++++++++-----------------------
hw/core/qdev-properties.c | 2 +-
3 files changed, 43 insertions(+), 54 deletions(-)
diff --git a/hw/core/qdev-prop-internal.h b/hw/core/qdev-prop-internal.h
index d7b77844fe0b..c190b7b88cf4 100644
--- a/hw/core/qdev-prop-internal.h
+++ b/hw/core/qdev-prop-internal.h
@@ -8,6 +8,8 @@
#ifndef HW_CORE_QDEV_PROP_INTERNAL_H
#define HW_CORE_QDEV_PROP_INTERNAL_H
+const QEnumLookup *qdev_propinfo_enum_lookup(const PropertyInfo *info);
+
void qdev_propinfo_get_enum(Object *obj, Visitor *v, const char *name,
void *opaque, Error **errp);
void qdev_propinfo_set_enum(Object *obj, Visitor *v, const char *name,
diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-system.c
index 3381de1144d6..8819a9a0b748 100644
--- a/hw/core/qdev-properties-system.c
+++ b/hw/core/qdev-properties-system.c
@@ -27,6 +27,7 @@
#include "qemu/uuid.h"
#include "qemu/error-report.h"
#include "qdev-prop-internal.h"
+#include "qapi/qapi-type-infos.h"
#include "qemu/audio.h"
#include "chardev/char-fe.h"
@@ -238,7 +239,7 @@ static void release_drive(Object *obj, const char *name,
void *opaque)
}
const PropertyInfo qdev_prop_drive = {
- .type = "str",
+ .qapi_type = &str_type_info,
.description = "Node name or ID of a block device to use as a backend",
.realized_set_allowed = true,
.get = get_drive,
@@ -247,7 +248,7 @@ const PropertyInfo qdev_prop_drive = {
};
const PropertyInfo qdev_prop_drive_iothread = {
- .type = "str",
+ .qapi_type = &str_type_info,
.description = "Node name or ID of a block device to use as a backend",
.realized_set_allowed = true,
.get = get_drive,
@@ -315,7 +316,7 @@ static void release_chr(Object *obj, const char *name, void
*opaque)
}
const PropertyInfo qdev_prop_chr = {
- .type = "str",
+ .qapi_type = &str_type_info,
.description = "ID of a chardev to use as a backend",
.get = get_chr,
.set = set_chr,
@@ -389,7 +390,7 @@ inval:
}
const PropertyInfo qdev_prop_macaddr = {
- .type = "str",
+ .qapi_type = &str_type_info,
.description = "Ethernet 6-byte MAC Address, example: 52:54:00:12:34:56",
.get = get_mac,
.set = set_mac,
@@ -477,7 +478,7 @@ out:
}
const PropertyInfo qdev_prop_netdev = {
- .type = "str",
+ .qapi_type = &str_type_info,
.description = "ID of a netdev to use as a backend",
.get = get_netdev,
.set = set_netdev,
@@ -514,7 +515,7 @@ static void set_audiodev(Object *obj, Visitor *v, const
char* name,
}
const PropertyInfo qdev_prop_audiodev = {
- .type = "str",
+ .qapi_type = &str_type_info,
.description = "ID of an audiodev to use as a backend",
/* release done on shutdown */
.get = get_audiodev,
@@ -584,7 +585,8 @@ static void qdev_propinfo_set_losttickpolicy(Object *obj,
Visitor *v,
int *ptr = object_field_prop_ptr(obj, prop);
int value;
- if (!visit_type_enum(v, name, &value, prop->info->enum_table, errp)) {
+ if (!visit_type_enum(v, name, &value,
+ qdev_propinfo_enum_lookup(prop->info), errp)) {
return;
}
@@ -604,9 +606,8 @@ static void qdev_propinfo_set_losttickpolicy(Object *obj,
Visitor *v,
QEMU_BUILD_BUG_ON(sizeof(LostTickPolicy) != sizeof(int));
const PropertyInfo qdev_prop_losttickpolicy = {
- .type = "LostTickPolicy",
+ .qapi_type = &LostTickPolicy_type_info,
.description = "Policy for handling lost ticks (discard/delay/slew)",
- .enum_table = &LostTickPolicy_lookup,
.get = qdev_propinfo_get_enum,
.set = qdev_propinfo_set_losttickpolicy,
.set_default_value = qdev_propinfo_set_default_value_enum,
@@ -631,7 +632,7 @@ static void set_blocksize(Object *obj, Visitor *v, const
char *name,
}
const PropertyInfo qdev_prop_blocksize = {
- .type = "size",
+ .qapi_type = &size_type_info,
.description = "A power of two between " MIN_BLOCK_SIZE_STR
" and " MAX_BLOCK_SIZE_STR,
.get = qdev_propinfo_get_size32,
@@ -644,9 +645,8 @@ const PropertyInfo qdev_prop_blocksize = {
QEMU_BUILD_BUG_ON(sizeof(BlockdevOnError) != sizeof(int));
const PropertyInfo qdev_prop_blockdev_on_error = {
- .type = "BlockdevOnError",
+ .qapi_type = &BlockdevOnError_type_info,
.description = "Error handling policy (report/ignore/enospc/stop/auto)",
- .enum_table = &BlockdevOnError_lookup,
.get = qdev_propinfo_get_enum,
.set = qdev_propinfo_set_enum,
.set_default_value = qdev_propinfo_set_default_value_enum,
@@ -657,10 +657,9 @@ const PropertyInfo qdev_prop_blockdev_on_error = {
QEMU_BUILD_BUG_ON(sizeof(BiosAtaTranslation) != sizeof(int));
const PropertyInfo qdev_prop_bios_chs_trans = {
- .type = "BiosAtaTranslation",
+ .qapi_type = &BiosAtaTranslation_type_info,
.description = "Logical CHS translation algorithm "
" (auto/none/lba/large/rechs)",
- .enum_table = &BiosAtaTranslation_lookup,
.get = qdev_propinfo_get_enum,
.set = qdev_propinfo_set_enum,
.set_default_value = qdev_propinfo_set_default_value_enum,
@@ -669,9 +668,8 @@ const PropertyInfo qdev_prop_bios_chs_trans = {
/* --- FDC default drive types */
const PropertyInfo qdev_prop_fdc_drive_type = {
- .type = "FloppyDriveType",
+ .qapi_type = &FloppyDriveType_type_info,
.description = "Floppy drive type (144/288/120/none/auto)",
- .enum_table = &FloppyDriveType_lookup,
.get = qdev_propinfo_get_enum,
.set = qdev_propinfo_set_enum,
.set_default_value = qdev_propinfo_set_default_value_enum,
@@ -680,10 +678,9 @@ const PropertyInfo qdev_prop_fdc_drive_type = {
/* --- MultiFDCompression --- */
const PropertyInfo qdev_prop_multifd_compression = {
- .type = "MultiFDCompression",
+ .qapi_type = &MultiFDCompression_type_info,
.description = "multifd compression method"
" (none/zlib/zstd/qpl/uadk/qatzip)",
- .enum_table = &MultiFDCompression_lookup,
.get = qdev_propinfo_get_enum,
.set = qdev_propinfo_set_enum,
.set_default_value = qdev_propinfo_set_default_value_enum,
@@ -694,9 +691,8 @@ const PropertyInfo qdev_prop_multifd_compression = {
QEMU_BUILD_BUG_ON(sizeof(MigMode) != sizeof(int));
const PropertyInfo qdev_prop_mig_mode = {
- .type = "MigMode",
+ .qapi_type = &MigMode_type_info,
.description = "Migration mode (normal/cpr-reboot)",
- .enum_table = &MigMode_lookup,
.get = qdev_propinfo_get_enum,
.set = qdev_propinfo_set_enum,
.set_default_value = qdev_propinfo_set_default_value_enum,
@@ -707,18 +703,16 @@ const PropertyInfo qdev_prop_mig_mode = {
QEMU_BUILD_BUG_ON(sizeof(GranuleMode) != sizeof(int));
const PropertyInfo qdev_prop_granule_mode = {
- .type = "GranuleMode",
+ .qapi_type = &GranuleMode_type_info,
.description = "Granule page size (4k/8k/16k/64k/host)",
- .enum_table = &GranuleMode_lookup,
.get = qdev_propinfo_get_enum,
.set = qdev_propinfo_set_enum,
.set_default_value = qdev_propinfo_set_default_value_enum,
};
const PropertyInfo qdev_prop_zero_page_detection = {
- .type = "ZeroPageDetection",
+ .qapi_type = &ZeroPageDetection_type_info,
.description = "Zero page detection (none/legacy/multifd)",
- .enum_table = &ZeroPageDetection_lookup,
.get = qdev_propinfo_get_enum,
.set = qdev_propinfo_set_enum,
.set_default_value = qdev_propinfo_set_default_value_enum,
@@ -729,9 +723,8 @@ const PropertyInfo qdev_prop_zero_page_detection = {
QEMU_BUILD_BUG_ON(sizeof(SsidSizeMode) != sizeof(int));
const PropertyInfo qdev_prop_ssidsize_mode = {
- .type = "SsidSizeMode",
+ .qapi_type = &SsidSizeMode_type_info,
.description = "ssidsize mode: auto, 0-20",
- .enum_table = &SsidSizeMode_lookup,
.get = qdev_propinfo_get_enum,
.set = qdev_propinfo_set_enum,
.set_default_value = qdev_propinfo_set_default_value_enum,
@@ -742,9 +735,8 @@ const PropertyInfo qdev_prop_ssidsize_mode = {
QEMU_BUILD_BUG_ON(sizeof(OasMode) != sizeof(int));
const PropertyInfo qdev_prop_oas_mode = {
- .type = "OasMode",
+ .qapi_type = &OasMode_type_info,
.description = "oas mode: auto, 32, 36, 40, 42, 44, 48, 52, 56",
- .enum_table = &OasMode_lookup,
.get = qdev_propinfo_get_enum,
.set = qdev_propinfo_set_enum,
.set_default_value = qdev_propinfo_set_default_value_enum,
@@ -824,7 +816,7 @@ out:
}
const PropertyInfo qdev_prop_reserved_region = {
- .type = "str",
+ .qapi_type = &str_type_info,
.description = "Reserved Region, example: 0xFEE00000:0xFEEFFFFF:0",
.get = get_reserved_region,
.set = set_reserved_region,
@@ -904,8 +896,7 @@ static char *print_pci_devfn(Object *obj, const Property
*prop)
}
const PropertyInfo qdev_prop_pci_devfn = {
- /* The formatted string accepted by the setter is a CLI convenience. */
- .type = "int32",
+ .qapi_type = &int32_type_info,
.description = "Slot and optional function number, example: 06.0 or 06",
.print = print_pci_devfn,
.get = qdev_propinfo_get_int32,
@@ -1011,7 +1002,7 @@ inval:
}
const PropertyInfo qdev_prop_pci_host_devaddr = {
- .type = "str",
+ .qapi_type = &str_type_info,
.description = "Address (bus:device.function) of "
"the host device, example: 04:10.0",
.get = get_pci_host_devaddr,
@@ -1021,9 +1012,8 @@ const PropertyInfo qdev_prop_pci_host_devaddr = {
/* --- OffAutoPCIBAR off/auto/bar0/bar1/bar2/bar3/bar4/bar5 --- */
const PropertyInfo qdev_prop_off_auto_pcibar = {
- .type = "OffAutoPCIBAR",
+ .qapi_type = &OffAutoPCIBAR_type_info,
.description = "off/auto/bar0/bar1/bar2/bar3/bar4/bar5",
- .enum_table = &OffAutoPCIBAR_lookup,
.get = qdev_propinfo_get_enum,
.set = qdev_propinfo_set_enum,
.set_default_value = qdev_propinfo_set_default_value_enum,
@@ -1062,7 +1052,8 @@ static void get_prop_pcielinkspeed(Object *obj, Visitor
*v, const char *name,
abort();
}
- visit_type_enum(v, name, &speed, prop->info->enum_table, errp);
+ visit_type_enum(v, name, &speed,
+ qdev_propinfo_enum_lookup(prop->info), errp);
}
static void set_prop_pcielinkspeed(Object *obj, Visitor *v, const char *name,
@@ -1072,8 +1063,8 @@ static void set_prop_pcielinkspeed(Object *obj, Visitor
*v, const char *name,
PCIExpLinkSpeed *p = object_field_prop_ptr(obj, prop);
int speed;
- if (!visit_type_enum(v, name, &speed, prop->info->enum_table,
- errp)) {
+ if (!visit_type_enum(v, name, &speed,
+ qdev_propinfo_enum_lookup(prop->info), errp)) {
return;
}
@@ -1103,9 +1094,8 @@ static void set_prop_pcielinkspeed(Object *obj, Visitor
*v, const char *name,
}
const PropertyInfo qdev_prop_pcie_link_speed = {
- .type = "PCIELinkSpeed",
+ .qapi_type = &PCIELinkSpeed_type_info,
.description = "2_5/5/8/16/32/64",
- .enum_table = &PCIELinkSpeed_lookup,
.get = get_prop_pcielinkspeed,
.set = set_prop_pcielinkspeed,
.set_default_value = qdev_propinfo_set_default_value_enum,
@@ -1147,7 +1137,8 @@ static void get_prop_pcielinkwidth(Object *obj, Visitor
*v, const char *name,
abort();
}
- visit_type_enum(v, name, &width, prop->info->enum_table, errp);
+ visit_type_enum(v, name, &width,
+ qdev_propinfo_enum_lookup(prop->info), errp);
}
static void set_prop_pcielinkwidth(Object *obj, Visitor *v, const char *name,
@@ -1157,8 +1148,8 @@ static void set_prop_pcielinkwidth(Object *obj, Visitor
*v, const char *name,
PCIExpLinkWidth *p = object_field_prop_ptr(obj, prop);
int width;
- if (!visit_type_enum(v, name, &width, prop->info->enum_table,
- errp)) {
+ if (!visit_type_enum(v, name, &width,
+ qdev_propinfo_enum_lookup(prop->info), errp)) {
return;
}
@@ -1191,9 +1182,8 @@ static void set_prop_pcielinkwidth(Object *obj, Visitor
*v, const char *name,
}
const PropertyInfo qdev_prop_pcie_link_width = {
- .type = "PCIELinkWidth",
+ .qapi_type = &PCIELinkWidth_type_info,
.description = "1/2/4/8/12/16/32",
- .enum_table = &PCIELinkWidth_lookup,
.get = get_prop_pcielinkwidth,
.set = set_prop_pcielinkwidth,
.set_default_value = qdev_propinfo_set_default_value_enum,
@@ -1241,7 +1231,7 @@ static void set_default_uuid_auto(ObjectProperty *op,
const Property *prop)
}
const PropertyInfo qdev_prop_uuid = {
- .type = "str",
+ .qapi_type = &str_type_info,
.description = "UUID (aka GUID) or \"" UUID_VALUE_AUTO
"\" for random value (default)",
.get = get_uuid,
@@ -1254,9 +1244,8 @@ const PropertyInfo qdev_prop_uuid = {
QEMU_BUILD_BUG_ON(sizeof(S390CpuEntitlement) != sizeof(int));
const PropertyInfo qdev_prop_cpus390entitlement = {
- .type = "S390CpuEntitlement",
+ .qapi_type = &S390CpuEntitlement_type_info,
.description = "auto/low/medium/high (default medium)",
- .enum_table = &S390CpuEntitlement_lookup,
.get = qdev_propinfo_get_enum,
.set = qdev_propinfo_set_enum,
.set_default_value = qdev_propinfo_set_default_value_enum,
@@ -1299,7 +1288,7 @@ static void release_iothread_vq_mapping_list(Object *obj,
}
const PropertyInfo qdev_prop_iothread_vq_mapping_list = {
- .type = "IOThreadVirtQueueMappingList",
+ .qapi_type = &IOThreadVirtQueueMappingList_type_info,
.description = "IOThread virtqueue mapping list [{\"iothread\":\"<id>\", "
"\"vqs\":[1,2,3,...]},...]",
.get = get_iothread_vq_mapping_list,
@@ -1310,18 +1299,16 @@ const PropertyInfo qdev_prop_iothread_vq_mapping_list =
{
/* --- Endian modes */
const PropertyInfo qdev_prop_endian_mode = {
- .type = "EndianMode",
+ .qapi_type = &EndianMode_type_info,
.description = "Endian mode, big/little/unspecified",
- .enum_table = &EndianMode_lookup,
.get = qdev_propinfo_get_enum,
.set = qdev_propinfo_set_enum,
.set_default_value = qdev_propinfo_set_default_value_enum,
};
const PropertyInfo qdev_prop_vmapple_virtio_blk_variant = {
- .type = "VMAppleVirtioBlkVariant",
+ .qapi_type = &VMAppleVirtioBlkVariant_type_info,
.description = "unspecified/root/aux",
- .enum_table = &VMAppleVirtioBlkVariant_lookup,
.get = qdev_propinfo_get_enum,
.set = qdev_propinfo_set_enum,
.set_default_value = qdev_propinfo_set_default_value_enum,
@@ -1364,7 +1351,7 @@ static void release_virtio_gpu_output_list(Object *obj,
}
const PropertyInfo qdev_prop_virtio_gpu_output_list = {
- .type = "VirtIOGPUOutputList",
+ .qapi_type = &VirtIOGPUOutputList_type_info,
.description = "VirtIO GPU output list [{\"name\":\"<name>\"},...]",
.get = get_virtio_gpu_output_list,
.set = set_virtio_gpu_output_list,
diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index abdb380cb9ec..a9abc646d5d7 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -101,7 +101,7 @@ static ObjectPropertyAccessor *field_prop_setter(const
PropertyInfo *info)
return info->set ? field_prop_set : NULL;
}
-static const QEnumLookup *qdev_propinfo_enum_lookup(const PropertyInfo *info)
+const QEnumLookup *qdev_propinfo_enum_lookup(const PropertyInfo *info)
{
if (info->qapi_type) {
assert(info->qapi_type->lookup);
--
2.56.0.116.g6de20f6092dc
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |