diff --git a/hw/qdev.c b/hw/qdev.c index 6a8f6bda2b..a9a9f891da 100644 --- a/hw/qdev.c +++ b/hw/qdev.c @@ -515,11 +515,6 @@ char* qdev_get_fw_dev_path(DeviceState *dev) return strdup(path); } -static char *qdev_get_type(Object *obj, Error **errp) -{ - return g_strdup(object_get_typename(obj)); -} - /** * Legacy property handling */ @@ -638,7 +633,6 @@ static void device_initfn(Object *obj) qdev_property_add_static(dev, prop, NULL); } - object_property_add_str(OBJECT(dev), "type", qdev_get_type, NULL, NULL); qdev_prop_set_defaults(dev, qdev_get_props(dev)); } diff --git a/qom/object.c b/qom/object.c index cec2d406b8..d5c6ff7471 100644 --- a/qom/object.c +++ b/qom/object.c @@ -1231,6 +1231,16 @@ void object_property_add_str(Object *obj, const char *name, prop, errp); } +static char *qdev_get_type(Object *obj, Error **errp) +{ + return g_strdup(object_get_typename(obj)); +} + +static void object_instance_init(Object *obj) +{ + object_property_add_str(obj, "type", qdev_get_type, NULL, NULL); +} + static void register_types(void) { static TypeInfo interface_info = { @@ -1242,6 +1252,7 @@ static void register_types(void) static TypeInfo object_info = { .name = TYPE_OBJECT, .instance_size = sizeof(Object), + .instance_init = object_instance_init, .abstract = true, };