@@ -9,9 +9,9 @@
#define QOM_STATIC_PROPERTY_INTERNAL_H
void field_prop_get_enum(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp);
+ Property *prop, Error **errp);
void field_prop_set_enum(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp);
+ Property *prop, Error **errp);
void field_prop_set_default_value_enum(ObjectProperty *op,
const Property *prop);
@@ -21,9 +21,9 @@ void field_prop_set_default_value_uint(ObjectProperty *op,
const Property *prop);
void field_prop_get_int32(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp);
+ Property *prop, Error **errp);
void field_prop_get_size32(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp);
+ Property *prop, Error **errp);
/**
* object_property_add_field: Add a field property to an object instance
@@ -54,6 +54,18 @@ struct Property {
const char *link_type;
};
+/**
+ * typedef FieldAccessor: a field property getter or setter function
+ * @obj: the object instance
+ * @v: the visitor that contains the property data
+ * @name: the name of the property
+ * @prop: Field property definition
+ * @errp: pointer to error information
+ */
+typedef void FieldAccessor(Object *obj, Visitor *v,
+ const char *name, Property *prop,
+ Error **errp);
+
/**
* struct PropertyInfo: information on a specific QOM property type
*/
@@ -71,16 +83,10 @@ struct PropertyInfo {
/** @create: Optional callback for creation of property */
ObjectProperty *(*create)(ObjectClass *oc, const char *name,
Property *prop);
- /**
- * @get: Property getter. The opaque parameter will point to
- * the &Property struct for the property.
- */
- ObjectPropertyAccessor *get;
- /**
- * @set: Property setter. The opaque parameter will point to
- * the &Property struct for the property.
- */
- ObjectPropertyAccessor *set;
+ /** @get: Property getter */
+ FieldAccessor *get;
+ /** @set: Property setter */
+ FieldAccessor *set;
/**
* @release: Optional release function, called when the object
* is destroyed
@@ -32,10 +32,10 @@
/* tpm backend property */
-static void get_tpm(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void get_tpm(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- TPMBackend **be = object_field_prop_ptr(obj, opaque);
+ TPMBackend **be = object_field_prop_ptr(obj, prop);
char *p;
p = g_strdup(*be ? (*be)->id : "");
@@ -43,10 +43,9 @@ static void get_tpm(Object *obj, Visitor *v, const char *name, void *opaque,
g_free(p);
}
-static void set_tpm(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void set_tpm(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
TPMBackend *s, **be = object_field_prop_ptr(obj, prop);
char *str;
@@ -333,9 +333,8 @@ static char *disk_to_vbd_name(unsigned int disk)
}
static void xen_block_get_vdev(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
XenBlockVdev *vdev = object_field_prop_ptr(obj, prop);
char *str;
@@ -393,9 +392,8 @@ static int vbd_name_to_disk(const char *name, const char **endp,
}
static void xen_block_set_vdev(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
XenBlockVdev *vdev = object_field_prop_ptr(obj, prop);
char *str, *p;
const char *end;
@@ -58,10 +58,9 @@ static bool check_prop_still_unset(Object *obj, const char *name,
/* --- drive --- */
-static void get_drive(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void get_drive(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
void **ptr = object_field_prop_ptr(obj, prop);
const char *value;
char *p;
@@ -165,16 +164,16 @@ fail:
g_free(str);
}
-static void set_drive(Object *obj, Visitor *v, const char *name, void *opaque,
+static void set_drive(Object *obj, Visitor *v, const char *name, Property *prop,
Error **errp)
{
- set_drive_helper(obj, v, name, opaque, false, errp);
+ set_drive_helper(obj, v, name, prop, false, errp);
}
static void set_drive_iothread(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- set_drive_helper(obj, v, name, opaque, true, errp);
+ set_drive_helper(obj, v, name, prop, true, errp);
}
static void release_drive(Object *obj, const char *name, void *opaque)
@@ -211,10 +210,10 @@ const PropertyInfo qdev_prop_drive_iothread = {
/* --- character device --- */
-static void get_chr(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void get_chr(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- CharBackend *be = object_field_prop_ptr(obj, opaque);
+ CharBackend *be = object_field_prop_ptr(obj, prop);
char *p;
p = g_strdup(be->chr && be->chr->label ? be->chr->label : "");
@@ -222,10 +221,9 @@ static void get_chr(Object *obj, Visitor *v, const char *name, void *opaque,
g_free(p);
}
-static void set_chr(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void set_chr(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
CharBackend *be = object_field_prop_ptr(obj, prop);
Chardev *s;
char *str;
@@ -282,10 +280,9 @@ const PropertyInfo qdev_prop_chr = {
* 01:02:03:04:05:06
* 01-02-03-04-05-06
*/
-static void get_mac(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void get_mac(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
MACAddr *mac = object_field_prop_ptr(obj, prop);
char buffer[2 * 6 + 5 + 1];
char *p = buffer;
@@ -297,10 +294,9 @@ static void get_mac(Object *obj, Visitor *v, const char *name, void *opaque,
visit_type_str(v, name, &p, errp);
}
-static void set_mac(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void set_mac(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
MACAddr *mac = object_field_prop_ptr(obj, prop);
int i, pos;
char *str;
@@ -360,9 +356,8 @@ void qdev_prop_set_macaddr(DeviceState *dev, const char *name,
/* --- netdev device --- */
static void get_netdev(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
NICPeers *peers_ptr = object_field_prop_ptr(obj, prop);
char *p = g_strdup(peers_ptr->ncs[0] ? peers_ptr->ncs[0]->name : "");
@@ -371,9 +366,8 @@ static void get_netdev(Object *obj, Visitor *v, const char *name,
}
static void set_netdev(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
NICPeers *peers_ptr = object_field_prop_ptr(obj, prop);
NetClientState **ncs = peers_ptr->ncs;
NetClientState *peers[MAX_QUEUE_NUM];
@@ -433,9 +427,8 @@ const PropertyInfo qdev_prop_netdev = {
/* --- audiodev --- */
static void get_audiodev(Object *obj, Visitor *v, const char* name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
QEMUSoundCard *card = object_field_prop_ptr(obj, prop);
char *p = g_strdup(audio_get_id(card));
@@ -444,9 +437,8 @@ static void get_audiodev(Object *obj, Visitor *v, const char* name,
}
static void set_audiodev(Object *obj, Visitor *v, const char* name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
QEMUSoundCard *card = object_field_prop_ptr(obj, prop);
AudioState *state;
int err = 0;
@@ -545,10 +537,9 @@ const PropertyInfo qdev_prop_losttickpolicy = {
/* --- blocksize --- */
static void set_blocksize(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
DeviceState *dev = DEVICE(obj);
- Property *prop = opaque;
uint32_t *ptr = object_field_prop_ptr(obj, prop);
uint64_t value;
Error *local_err = NULL;
@@ -634,9 +625,8 @@ const PropertyInfo qdev_prop_multifd_compression = {
* and type is a non-negative decimal integer
*/
static void get_reserved_region(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
ReservedRegion *rr = object_field_prop_ptr(obj, prop);
char buffer[64];
char *p = buffer;
@@ -650,9 +640,8 @@ static void get_reserved_region(Object *obj, Visitor *v, const char *name,
}
static void set_reserved_region(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
ReservedRegion *rr = object_field_prop_ptr(obj, prop);
Error *local_err = NULL;
const char *endptr;
@@ -712,9 +701,8 @@ const PropertyInfo qdev_prop_reserved_region = {
* bus-local address, i.e. "$slot" or "$slot.$fn"
*/
static void set_pci_devfn(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
int32_t value, *ptr = object_field_prop_ptr(obj, prop);
unsigned int slot, fn, n;
char *str;
@@ -774,9 +762,8 @@ const PropertyInfo qdev_prop_pci_devfn = {
/* --- pci host address --- */
static void get_pci_host_devaddr(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
PCIHostDeviceAddress *addr = object_field_prop_ptr(obj, prop);
char buffer[] = "ffff:ff:ff.f";
char *p = buffer;
@@ -800,9 +787,8 @@ static void get_pci_host_devaddr(Object *obj, Visitor *v, const char *name,
* if <domain> is not supplied, it's assumed to be 0.
*/
static void set_pci_host_devaddr(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
PCIHostDeviceAddress *addr = object_field_prop_ptr(obj, prop);
char *str, *p;
const char *e;
@@ -889,9 +875,8 @@ const PropertyInfo qdev_prop_off_auto_pcibar = {
/* --- PCIELinkSpeed 2_5/5/8/16 -- */
static void get_prop_pcielinkspeed(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
PCIExpLinkSpeed *p = object_field_prop_ptr(obj, prop);
int speed;
@@ -917,9 +902,8 @@ static void get_prop_pcielinkspeed(Object *obj, Visitor *v, const char *name,
}
static void set_prop_pcielinkspeed(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
PCIExpLinkSpeed *p = object_field_prop_ptr(obj, prop);
int speed;
@@ -959,9 +943,8 @@ const PropertyInfo qdev_prop_pcie_link_speed = {
/* --- PCIELinkWidth 1/2/4/8/12/16/32 -- */
static void get_prop_pcielinkwidth(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
PCIExpLinkWidth *p = object_field_prop_ptr(obj, prop);
int width;
@@ -996,9 +979,8 @@ static void get_prop_pcielinkwidth(Object *obj, Visitor *v, const char *name,
}
static void set_prop_pcielinkwidth(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
PCIExpLinkWidth *p = object_field_prop_ptr(obj, prop);
int width;
@@ -1046,10 +1028,9 @@ const PropertyInfo qdev_prop_pcie_link_width = {
/* --- UUID --- */
-static void get_uuid(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void get_uuid(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
QemuUUID *uuid = object_field_prop_ptr(obj, prop);
char buffer[UUID_FMT_LEN + 1];
char *p = buffer;
@@ -1061,10 +1042,9 @@ static void get_uuid(Object *obj, Visitor *v, const char *name, void *opaque,
#define UUID_VALUE_AUTO "auto"
-static void set_uuid(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void set_uuid(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
QemuUUID *uuid = object_field_prop_ptr(obj, prop);
char *str;
@@ -2341,9 +2341,8 @@ void css_reset(void)
}
static void get_css_devid(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
CssDevId *dev_id = object_field_prop_ptr(obj, prop);
char buffer[] = "xx.x.xxxx";
char *p = buffer;
@@ -2370,9 +2369,8 @@ static void get_css_devid(Object *obj, Visitor *v, const char *name,
* parse <cssid>.<ssid>.<devid> and assert valid range for cssid/ssid
*/
static void set_css_devid(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
CssDevId *dev_id = object_field_prop_ptr(obj, prop);
char *str;
int num, n1, n2;
@@ -1320,19 +1320,17 @@ static void s390_pci_device_reset(DeviceState *dev)
}
static void s390_pci_get_fid(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint32_t *ptr = object_field_prop_ptr(obj, prop);
visit_type_uint32(v, name, ptr, errp);
}
static void s390_pci_set_fid(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
S390PCIBusDevice *zpci = S390_PCI_DEVICE(obj);
- Property *prop = opaque;
uint32_t *ptr = object_field_prop_ptr(obj, prop);
if (!visit_type_uint32(v, name, ptr, errp)) {
@@ -1485,20 +1485,18 @@ void vfio_setup_resetfn_quirk(VFIOPCIDevice *vdev)
* https://lists.gnu.org/archive/html/qemu-devel/2017-08/pdfUda5iEpgOS.pdf
*/
static void get_nv_gpudirect_clique_id(Object *obj, Visitor *v,
- const char *name, void *opaque,
- Error **errp)
+ const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint8_t *ptr = object_field_prop_ptr(obj, prop);
visit_type_uint8(v, name, ptr, errp);
}
static void set_nv_gpudirect_clique_id(Object *obj, Visitor *v,
- const char *name, void *opaque,
- Error **errp)
+ const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint8_t value, *ptr = object_field_prop_ptr(obj, prop);
if (!visit_type_uint8(v, name, &value, errp)) {
@@ -8,18 +8,16 @@
#include "qemu/uuid.h"
void field_prop_get_enum(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
int *ptr = object_field_prop_ptr(obj, prop);
visit_type_enum(v, name, ptr, prop->info->enum_table, errp);
}
void field_prop_set_enum(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
int *ptr = object_field_prop_ptr(obj, prop);
visit_type_enum(v, name, ptr, prop->info->enum_table, errp);
@@ -59,9 +57,8 @@ static void bit_prop_set(Object *obj, Property *props, bool val)
}
static void prop_get_bit(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint32_t *p = object_field_prop_ptr(obj, prop);
bool value = (*p & qdev_get_prop_mask(prop)) != 0;
@@ -69,9 +66,8 @@ static void prop_get_bit(Object *obj, Visitor *v, const char *name,
}
static void prop_set_bit(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
bool value;
if (!visit_type_bool(v, name, &value, errp)) {
@@ -113,9 +109,8 @@ static void bit64_prop_set(Object *obj, Property *props, bool val)
}
static void prop_get_bit64(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint64_t *p = object_field_prop_ptr(obj, prop);
bool value = (*p & qdev_get_prop_mask64(prop)) != 0;
@@ -123,9 +118,8 @@ static void prop_get_bit64(Object *obj, Visitor *v, const char *name,
}
static void prop_set_bit64(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
bool value;
if (!visit_type_bool(v, name, &value, errp)) {
@@ -144,19 +138,17 @@ const PropertyInfo prop_info_bit64 = {
/* --- bool --- */
-static void get_bool(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void get_bool(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
bool *ptr = object_field_prop_ptr(obj, prop);
visit_type_bool(v, name, ptr, errp);
}
-static void set_bool(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void set_bool(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
bool *ptr = object_field_prop_ptr(obj, prop);
visit_type_bool(v, name, ptr, errp);
@@ -171,19 +163,17 @@ const PropertyInfo prop_info_bool = {
/* --- 8bit integer --- */
-static void get_uint8(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void get_uint8(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint8_t *ptr = object_field_prop_ptr(obj, prop);
visit_type_uint8(v, name, ptr, errp);
}
-static void set_uint8(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void set_uint8(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint8_t *ptr = object_field_prop_ptr(obj, prop);
visit_type_uint8(v, name, ptr, errp);
@@ -211,18 +201,16 @@ const PropertyInfo prop_info_uint8 = {
/* --- 16bit integer --- */
static void get_uint16(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint16_t *ptr = object_field_prop_ptr(obj, prop);
visit_type_uint16(v, name, ptr, errp);
}
static void set_uint16(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint16_t *ptr = object_field_prop_ptr(obj, prop);
visit_type_uint16(v, name, ptr, errp);
@@ -238,36 +226,32 @@ const PropertyInfo prop_info_uint16 = {
/* --- 32bit integer --- */
static void get_uint32(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint32_t *ptr = object_field_prop_ptr(obj, prop);
visit_type_uint32(v, name, ptr, errp);
}
static void set_uint32(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint32_t *ptr = object_field_prop_ptr(obj, prop);
visit_type_uint32(v, name, ptr, errp);
}
void field_prop_get_int32(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
int32_t *ptr = object_field_prop_ptr(obj, prop);
visit_type_int32(v, name, ptr, errp);
}
-static void set_int32(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void set_int32(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
int32_t *ptr = object_field_prop_ptr(obj, prop);
visit_type_int32(v, name, ptr, errp);
@@ -290,36 +274,32 @@ const PropertyInfo prop_info_int32 = {
/* --- 64bit integer --- */
static void get_uint64(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint64_t *ptr = object_field_prop_ptr(obj, prop);
visit_type_uint64(v, name, ptr, errp);
}
static void set_uint64(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint64_t *ptr = object_field_prop_ptr(obj, prop);
visit_type_uint64(v, name, ptr, errp);
}
static void get_int64(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
int64_t *ptr = object_field_prop_ptr(obj, prop);
visit_type_int64(v, name, ptr, errp);
}
static void set_int64(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
int64_t *ptr = object_field_prop_ptr(obj, prop);
visit_type_int64(v, name, ptr, errp);
@@ -348,9 +328,8 @@ static void release_string(Object *obj, const char *name, void *opaque)
}
static void get_string(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
char **ptr = object_field_prop_ptr(obj, prop);
if (!*ptr) {
@@ -362,9 +341,8 @@ static void get_string(Object *obj, Visitor *v, const char *name,
}
static void set_string(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
char **ptr = object_field_prop_ptr(obj, prop);
char *str;
@@ -396,19 +374,17 @@ const PropertyInfo prop_info_on_off_auto = {
/* --- 32bit unsigned int 'size' type --- */
void field_prop_get_size32(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint32_t *ptr = object_field_prop_ptr(obj, prop);
uint64_t value = *ptr;
visit_type_size(v, name, &value, errp);
}
-static void set_size32(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void set_size32(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint32_t *ptr = object_field_prop_ptr(obj, prop);
uint64_t value;
@@ -437,14 +413,8 @@ const PropertyInfo prop_info_size32 = {
/* --- support for array properties --- */
static void set_prop_arraylen(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
- /* Setter for the property which defines the length of a
- * variable-sized property array. As well as actually setting the
- * array-length field in the device struct, we have to create the
- * array itself and dynamically add the corresponding properties.
- */
- Property *prop = opaque;
ObjectProperty *op = object_property_find_err(obj, name, &error_abort);
uint32_t *alenptr = object_field_prop_ptr(obj, prop);
void **arrayptr = (void *)obj + prop->arrayoffset;
@@ -500,19 +470,17 @@ const PropertyInfo prop_info_arraylen = {
/* --- 64bit unsigned int 'size' type --- */
-static void get_size(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void get_size(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint64_t *ptr = object_field_prop_ptr(obj, prop);
visit_type_size(v, name, ptr, errp);
}
-static void set_size(Object *obj, Visitor *v, const char *name, void *opaque,
- Error **errp)
+static void set_size(Object *obj, Visitor *v, const char *name,
+ Property *prop, Error **errp)
{
- Property *prop = opaque;
uint64_t *ptr = object_field_prop_ptr(obj, prop);
visit_type_size(v, name, ptr, errp);
@@ -787,7 +787,7 @@ static void sparc_cpu_initfn(Object *obj)
}
static void sparc_get_nwindows(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
SPARCCPU *cpu = SPARC_CPU(obj);
int64_t value = cpu->env.def.nwindows;
@@ -796,7 +796,7 @@ static void sparc_get_nwindows(Object *obj, Visitor *v, const char *name,
}
static void sparc_set_nwindows(Object *obj, Visitor *v, const char *name,
- void *opaque, Error **errp)
+ Property *prop, Error **errp)
{
const int64_t min = MIN_NWINDOWS;
const int64_t max = MAX_NWINDOWS;
All field property getters and setters must interpret the fourth argument as Property*. Change the function signature of field property getters and setters to indicate that. Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- Cc: Stefan Berger <stefanb@linux.vnet.ibm.com> Cc: Stefano Stabellini <sstabellini@kernel.org> Cc: Anthony Perard <anthony.perard@citrix.com> Cc: Paul Durrant <paul@xen.org> Cc: Kevin Wolf <kwolf@redhat.com> Cc: Max Reitz <mreitz@redhat.com> Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: "Daniel P. Berrangé" <berrange@redhat.com> Cc: Eduardo Habkost <ehabkost@redhat.com> Cc: Richard Henderson <rth@twiddle.net> Cc: David Hildenbrand <david@redhat.com> Cc: Cornelia Huck <cohuck@redhat.com> Cc: Thomas Huth <thuth@redhat.com> Cc: Halil Pasic <pasic@linux.ibm.com> Cc: Christian Borntraeger <borntraeger@de.ibm.com> Cc: Matthew Rosato <mjrosato@linux.ibm.com> Cc: Alex Williamson <alex.williamson@redhat.com> Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Cc: Artyom Tarasenko <atar4qemu@gmail.com> Cc: qemu-devel@nongnu.org Cc: xen-devel@lists.xenproject.org Cc: qemu-block@nongnu.org Cc: qemu-s390x@nongnu.org --- include/qom/field-property-internal.h | 8 +- include/qom/field-property.h | 26 ++++--- backends/tpm/tpm_util.c | 11 ++- hw/block/xen-block.c | 6 +- hw/core/qdev-properties-system.c | 86 +++++++++------------- hw/s390x/css.c | 6 +- hw/s390x/s390-pci-bus.c | 6 +- hw/vfio/pci-quirks.c | 10 +-- qom/property-types.c | 102 +++++++++----------------- target/sparc/cpu.c | 4 +- 10 files changed, 105 insertions(+), 160 deletions(-)