summaryrefslogtreecommitdiffstats
path: root/qdev-monitor.c
diff options
context:
space:
mode:
authorPeter Maydell2020-01-27 10:44:03 +0100
committerPeter Maydell2020-01-27 10:44:04 +0100
commit760df0d121a836dcbf3726b80b820115aef21b30 (patch)
tree6c45419b94179514c09b0270ed31326fe83f874b /qdev-monitor.c
parentMerge remote-tracking branch 'remotes/palmer/tags/riscv-for-master-5.0-sf1' i... (diff)
parentbuild-sys: clean up flags included in the linker command line (diff)
downloadqemu-760df0d121a836dcbf3726b80b820115aef21b30.tar.gz
qemu-760df0d121a836dcbf3726b80b820115aef21b30.tar.xz
qemu-760df0d121a836dcbf3726b80b820115aef21b30.zip
Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging
* Register qdev properties as class properties (Marc-André) * Cleanups (Philippe) * virtio-scsi fix (Pan Nengyuan) * Tweak Skylake-v3 model id (Kashyap) * x86 UCODE_REV support and nested live migration fix (myself) * Advisory mode for pvpanic (Zhenwei) # gpg: Signature made Fri 24 Jan 2020 20:16:23 GMT # gpg: using RSA key BFFBD25F78C7AE83 # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [full] # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * remotes/bonzini/tags/for-upstream: (58 commits) build-sys: clean up flags included in the linker command line target/i386: Add the 'model-id' for Skylake -v3 CPU models qdev: use object_property_help() qapi/qmp: add ObjectPropertyInfo.default-value qom: introduce object_property_help() qom: simplify qmp_device_list_properties() vl: print default value in object help qdev: register properties as class properties qdev: move instance properties to class properties qdev: rename DeviceClass.props qdev: set properties with device_class_set_props() object: return self in object_ref() object: release all props object: add object_class_property_add_link() object: express const link with link property object: add direct link flag object: rename link "child" to "target" object: check strong flag with & object: do not free class properties object: add object_property_set_default ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'qdev-monitor.c')
-rw-r--r--qdev-monitor.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/qdev-monitor.c b/qdev-monitor.c
index 3465a1e2d0..8ce71a206b 100644
--- a/qdev-monitor.c
+++ b/qdev-monitor.c
@@ -37,6 +37,7 @@
#include "sysemu/sysemu.h"
#include "migration/misc.h"
#include "migration/migration.h"
+#include "qemu/cutils.h"
/*
* Aliases were a bad idea from the start. Let's keep them
@@ -256,6 +257,8 @@ int qdev_device_help(QemuOpts *opts)
const char *driver;
ObjectPropertyInfoList *prop_list;
ObjectPropertyInfoList *prop;
+ GPtrArray *array;
+ int i;
driver = qemu_opt_get(opts, "driver");
if (driver && is_help_option(driver)) {
@@ -285,19 +288,20 @@ int qdev_device_help(QemuOpts *opts)
} else {
qemu_printf("There are no options for %s.\n", driver);
}
+ array = g_ptr_array_new();
for (prop = prop_list; prop; prop = prop->next) {
- int len;
- qemu_printf(" %s=<%s>%n", prop->value->name, prop->value->type, &len);
- if (prop->value->has_description) {
- if (len < 24) {
- qemu_printf("%*s", 24 - len, "");
- }
- qemu_printf(" - %s\n", prop->value->description);
- } else {
- qemu_printf("\n");
- }
- }
-
+ g_ptr_array_add(array,
+ object_property_help(prop->value->name,
+ prop->value->type,
+ prop->value->default_value,
+ prop->value->description));
+ }
+ g_ptr_array_sort(array, (GCompareFunc)qemu_pstrcmp0);
+ for (i = 0; i < array->len; i++) {
+ printf("%s\n", (char *)array->pdata[i]);
+ }
+ g_ptr_array_set_free_func(array, g_free);
+ g_ptr_array_free(array, true);
qapi_free_ObjectPropertyInfoList(prop_list);
return 1;
@@ -748,7 +752,7 @@ static void qdev_print(Monitor *mon, DeviceState *dev, int indent)
}
class = object_get_class(OBJECT(dev));
do {
- qdev_print_props(mon, dev, DEVICE_CLASS(class)->props, indent);
+ qdev_print_props(mon, dev, DEVICE_CLASS(class)->props_, indent);
class = object_class_get_parent(class);
} while (class != object_class_by_name(TYPE_DEVICE));
bus_print_dev(dev->parent_bus, mon, dev, indent);