Message ID | 20240528095459.896594-2-kraxel@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | allow to deprecate objects and devices | expand |
On Tue, May 28, 2024 at 11:54:56AM +0200, Gerd Hoffmann wrote: > Add deprecation_note field (string) to ObjectClass. > Add deprecated bool to ObjectTypeInfo, report in 'qom-list-types'. > Print the note when listing devices via '-device help'. > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> > --- > include/qom/object.h | 1 + > qom/qom-qmp-cmds.c | 4 ++++ > system/qdev-monitor.c | 5 +++++ > qapi/qom.json | 4 +++- > 4 files changed, 13 insertions(+), 1 deletion(-) I think that object.c, object_init_with_type() should be printing a message on stderr when creating an instance of a deprecated object/device, since we do that with machine types and CPUs that are deprecated. With regards, Daniel
diff --git a/include/qom/object.h b/include/qom/object.h index 13d3a655ddf9..6c682aa0135f 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -136,6 +136,7 @@ struct ObjectClass ObjectUnparent *unparent; GHashTable *properties; + const char *deprecation_note; }; /** diff --git a/qom/qom-qmp-cmds.c b/qom/qom-qmp-cmds.c index e91a2353472a..43de9c9ae141 100644 --- a/qom/qom-qmp-cmds.c +++ b/qom/qom-qmp-cmds.c @@ -101,6 +101,10 @@ static void qom_list_types_tramp(ObjectClass *klass, void *data) if (parent) { info->parent = g_strdup(object_class_get_name(parent)); } + if (klass->deprecation_note) { + info->has_deprecated = true; + info->deprecated = true; + } QAPI_LIST_PREPEND(*pret, info); } diff --git a/system/qdev-monitor.c b/system/qdev-monitor.c index 6af6ef7d667f..704be312e1a7 100644 --- a/system/qdev-monitor.c +++ b/system/qdev-monitor.c @@ -144,6 +144,8 @@ static bool qdev_class_has_alias(DeviceClass *dc) static void qdev_print_devinfo(DeviceClass *dc) { + ObjectClass *klass = OBJECT_CLASS(dc); + qemu_printf("name \"%s\"", object_class_get_name(OBJECT_CLASS(dc))); if (dc->bus_type) { qemu_printf(", bus %s", dc->bus_type); @@ -157,6 +159,9 @@ static void qdev_print_devinfo(DeviceClass *dc) if (!dc->user_creatable) { qemu_printf(", no-user"); } + if (klass->deprecation_note) { + qemu_printf(", deprecated \"%s\"", klass->deprecation_note); + } qemu_printf("\n"); } diff --git a/qapi/qom.json b/qapi/qom.json index 38dde6d785ac..bd062feabaf7 100644 --- a/qapi/qom.json +++ b/qapi/qom.json @@ -163,10 +163,12 @@ # # @parent: Name of parent type, if any (since 2.10) # +# @deprecated: the type is deprecated (since 9.1) +# # Since: 1.1 ## { 'struct': 'ObjectTypeInfo', - 'data': { 'name': 'str', '*abstract': 'bool', '*parent': 'str' } } + 'data': { 'name': 'str', '*abstract': 'bool', '*parent': 'str', '*deprecated': 'bool' } } ## # @qom-list-types:
Add deprecation_note field (string) to ObjectClass. Add deprecated bool to ObjectTypeInfo, report in 'qom-list-types'. Print the note when listing devices via '-device help'. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> --- include/qom/object.h | 1 + qom/qom-qmp-cmds.c | 4 ++++ system/qdev-monitor.c | 5 +++++ qapi/qom.json | 4 +++- 4 files changed, 13 insertions(+), 1 deletion(-)