Lin Ma <l...@suse.com> writes: > Signed-off-by: Lin Ma <l...@suse.com> > --- > qemu-options.hx | 5 ++++- > qom/object_interfaces.c | 16 ++++++++++++++++ > 2 files changed, 20 insertions(+), 1 deletion(-) > > diff --git a/qemu-options.hx b/qemu-options.hx > index a71aaf8..c5f4a12 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -3752,7 +3752,8 @@ DEF("object", HAS_ARG, QEMU_OPTION_object, > " create a new object of type TYPENAME setting > properties\n" > " in the order they are specified. Note that the 'id'\n" > " property must be set. These objects are placed in > the\n" > - " '/objects' path.\n", > + " '/objects' path.\n" > + " Use '-object help' to print available backend types.\n", > QEMU_ARCH_ALL) > STEXI > @item -object @var{typename}[,@var{prop1}=@var{value1},...] > @@ -3762,6 +3763,8 @@ in the order they are specified. Note that the 'id' > property must be set. These objects are placed in the > '/objects' path. > > +Use '-object help' to print available backend types. > + > @table @option > > @item -object > memory-backend-file,id=@var{id},size=@var{size},mem-path=@var{dir},share=@var{on|off} > diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c > index bf59846..8f820a4 100644 > --- a/qom/object_interfaces.c > +++ b/qom/object_interfaces.c > @@ -58,6 +58,22 @@ Object *user_creatable_add(const QDict *qdict, > goto out_visit; > } > > + if (!strcmp(type, "help")) {
Please use is_help_option(). > + printf("Available object backend types:\n"); > + GSList *list = object_class_get_list(TYPE_USER_CREATABLE, false); > + while (list) { > + const char *name; > + name = object_class_get_name(OBJECT_CLASS(list->data)); > + /* Ignore user-creatable. */ > + if (strcmp(name, TYPE_USER_CREATABLE)) { > + printf("%s\n", name); > + } > + list = list->next; > + } > + g_slist_free(list); > + exit(0); > + } > + > qdict_del(pdict, "id"); > visit_type_str(v, "id", &id, &local_err); > if (local_err) {