Hi

On Tue, Aug 25, 2026 at 6:51 PM Mark Cave-Ayland
<[email protected]> wrote:
>
> On 18/08/2026 12:10, Marc-André Lureau wrote:
>
> > Wire up the new qapi-type field in all four QMP handlers that return
> > ObjectPropertyInfo or ObjectPropertyValue: qom-list, qom-list-get,
> > device-list-properties, and qom-list-properties.
> >
> > When an ObjectProperty has a qapi_type set, the masked QAPI type name
> > is copied into the response, allowing clients to cross-reference with
> > query-qmp-schema.
> >
> > No property has it yet, the following changes will populate it.
> >
> > Reviewed-by: Markus Armbruster <[email protected]>
> > Signed-off-by: Marc-André Lureau <[email protected]>
> > ---
> >   qom/qom-qmp-cmds.c | 32 +++++++++++++++++++-------------
> >   1 file changed, 19 insertions(+), 13 deletions(-)
> >
> > diff --git a/qom/qom-qmp-cmds.c b/qom/qom-qmp-cmds.c
> > index 330895361d47..f9e6d4371cc5 100644
> > --- a/qom/qom-qmp-cmds.c
> > +++ b/qom/qom-qmp-cmds.c
> > @@ -25,9 +25,22 @@
> >   #include "qapi/qobject-input-visitor.h"
> >   #include "qapi/qobject-output-visitor.h"
> >   #include "qemu/cutils.h"
> > +#include "qapi/qapi-type-info.h"
> >   #include "qom/object_interfaces.h"
> >   #include "qom/qom-qobject.h"
> >
> > +static ObjectPropertyInfo *qom_property_info(ObjectProperty *prop)
> > +{
> > +    ObjectPropertyInfo *info = g_new0(ObjectPropertyInfo, 1);
> > +
> > +    info->name = g_strdup(prop->name);
> > +    info->type = g_strdup(prop->type);
> > +    if (prop->qapi_type) {
> > +        info->qapi_type = g_strdup(prop->qapi_type->masked_name);
> > +    }
> > +    return info;
> > +}
>
> Any reason not to add info->description here? It seems to be set the
> same way in both cases below.

Indeed, we could factor this in the same function. The description &
default_value are not used by qmp_qom_list(), but this is harmless.
I'll add some patches.


>
> > +
> >   static Object *qom_resolve_path(const char *path, Error **errp)
> >   {
> >       bool ambiguous = false;
> > @@ -58,12 +71,7 @@ ObjectPropertyInfoList *qmp_qom_list(const char *path, 
> > Error **errp)
> >
> >       object_property_iter_init(&iter, obj);
> >       while ((prop = object_property_iter_next(&iter))) {
> > -        ObjectPropertyInfo *value = g_new0(ObjectPropertyInfo, 1);
> > -
> > -        QAPI_LIST_PREPEND(props, value);
> > -
> > -        value->name = g_strdup(prop->name);
> > -        value->type = g_strdup(prop->type);
> > +        QAPI_LIST_PREPEND(props, qom_property_info(prop));
> >       }
> >
> >       return props;
> > @@ -78,6 +86,9 @@ static void qom_list_add_property_value(Object *obj, 
> > ObjectProperty *prop,
> >
> >       item->name = g_strdup(prop->name);
> >       item->type = g_strdup(prop->type);
> > +    if (prop->qapi_type) {
> > +        item->qapi_type = g_strdup(prop->qapi_type->masked_name);
> > +    }
> >       item->value = object_property_get_qobject(obj, prop->name, NULL);
> >   }
> >
> > @@ -218,9 +229,7 @@ ObjectPropertyInfoList 
> > *qmp_device_list_properties(const char *typename,
> >               continue;
> >           }
> >
> > -        info = g_new0(ObjectPropertyInfo, 1);
> > -        info->name = g_strdup(prop->name);
> > -        info->type = g_strdup(prop->type);
> > +        info = qom_property_info(prop);
> >           info->description = g_strdup(prop->description);
> >           info->default_value = qobject_ref(prop->defval);
> >
> > @@ -261,11 +270,8 @@ ObjectPropertyInfoList *qmp_qom_list_properties(const 
> > char *typename,
> >           object_property_iter_init(&iter, obj);
> >       }
> >       while ((prop = object_property_iter_next(&iter))) {
> > -        ObjectPropertyInfo *info;
> > +        ObjectPropertyInfo *info = qom_property_info(prop);
> >
> > -        info = g_malloc0(sizeof(*info));
> > -        info->name = g_strdup(prop->name);
> > -        info->type = g_strdup(prop->type);
> >           info->description = g_strdup(prop->description);
> >           info->default_value = qobject_ref(prop->defval);
>
> ATB,
>
> Mark.
>


Reply via email to