qdev: Make PropertyInfo.print method get Object* argument
authorEduardo Habkost <ehabkost@redhat.com>
Fri, 11 Dec 2020 22:05:04 +0000 (17:05 -0500)
committerEduardo Habkost <ehabkost@redhat.com>
Tue, 15 Dec 2020 15:02:07 +0000 (10:02 -0500)
Make the code more generic and not specific to TYPE_DEVICE.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20201211220529.2290218-8-ehabkost@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
hw/core/qdev-properties-system.c
hw/core/qdev-properties.c
include/hw/qdev-properties.h

index 8912fb4e9c39698278cb539819f9e5667d652511..77b31eb9dcfb08add79591fedc5b07f8d2b832bd 100644 (file)
@@ -801,9 +801,10 @@ invalid:
     g_free(str);
 }
 
-static int print_pci_devfn(DeviceState *dev, Property *prop, char *dest,
+static int print_pci_devfn(Object *obj, Property *prop, char *dest,
                            size_t len)
 {
+    DeviceState *dev = DEVICE(obj);
     int32_t *ptr = qdev_get_prop_ptr(dev, prop);
 
     if (*ptr == -1) {
index daf844c2d3e03234a942c422b352bfd74b54058d..b6cf53e92932c18ff75a4757b4ece22c2a1bcb1b 100644 (file)
@@ -988,13 +988,12 @@ static void qdev_get_legacy_property(Object *obj, Visitor *v,
                                      const char *name, void *opaque,
                                      Error **errp)
 {
-    DeviceState *dev = DEVICE(obj);
     Property *prop = opaque;
 
     char buffer[1024];
     char *ptr = buffer;
 
-    prop->info->print(dev, prop, buffer, sizeof(buffer));
+    prop->info->print(obj, prop, buffer, sizeof(buffer));
     visit_type_str(v, name, &ptr, errp);
 }
 
index db7ce51dd527c7d78fc599356233d537ca494431..0ea822e6a7259b8f2780a014ae3f587a941a4733 100644 (file)
@@ -32,7 +32,7 @@ struct PropertyInfo {
     const char *name;
     const char *description;
     const QEnumLookup *enum_table;
-    int (*print)(DeviceState *dev, Property *prop, char *dest, size_t len);
+    int (*print)(Object *obj, Property *prop, char *dest, size_t len);
     void (*set_default_value)(ObjectProperty *op, const Property *prop);
     void (*create)(ObjectClass *oc, Property *prop);
     ObjectPropertyAccessor *get;