qmp: Add qom-list-properties to list QOM object properties

There is already 'device-list-properties' which does most of the job,
however it does not handle everything returned by qom-list-types such
as machines as they inherit directly from TYPE_OBJECT and not TYPE_DEVICE.
It does not handle abstract classes either.

This adds a new qom-list-properties command which prints properties
of a specific class and its instance. It is pretty much a simplified copy
of the device-list-properties handler.

Since it creates an object instance, device properties should appear
in the output as they are copied to QOM properties at the instance_init
hook.

This adds a object_class_property_iter_init() helper to allow class
properties enumeration uses it in the new QMP command to allow properties
listing for abstract classes.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Message-Id: <20180301130939.15875-3-aik@ozlabs.ru>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Alexey Kardashevskiy 2018-03-02 00:09:39 +11:00 committed by Paolo Bonzini
parent 35f63767dc
commit 961c47bb8b
4 changed files with 87 additions and 0 deletions

View file

@ -1016,6 +1016,22 @@ typedef struct ObjectPropertyIterator {
void object_property_iter_init(ObjectPropertyIterator *iter,
Object *obj);
/**
* object_class_property_iter_init:
* @klass: the class
*
* Initializes an iterator for traversing all properties
* registered against an object class and all parent classes.
*
* It is forbidden to modify the property list while iterating,
* whether removing or adding properties.
*
* This can be used on abstract classes as it does not create a temporary
* instance.
*/
void object_class_property_iter_init(ObjectPropertyIterator *iter,
ObjectClass *klass);
/**
* object_property_iter_next:
* @iter: the iterator instance