This is v4 of this series. Besides small fixes, it's main focus is on the groundwork for the visualization command: qdev path usability.
The significant changes are: - drop many of the inconsistent or ambiguous qtree abbreviations - devices can now be address via unique ID (no '/' allowed here) or an absolute path (must start with '/') - buses remain addressable via their ambiguous local name (mostly to avoid libvirt breakages) or their absolute path - the per-bus instance numbers introduced in this series are now printed consistently - monitor command completion inside option lists is added (allows to expand "device_add ...,bus=" and "drive=") - HMP commands can now have their own argument set (not yet urgently needed for device_show but likely already useful for other commands) Git url as usual: git://git.kiszka.org/qemu.git queues/device-show Thanks once again for comments. Hope we can soon agree on a mergable version for 0.13. Jan Kiszka (23): qdev: Rework qtree path abbreviations qdev: Restrict direct bus addressing via its name qdev: Drop ID matching from qtree paths qdev: Allow device addressing via 'driver.instance' qdev: Convert device and bus lists to QTAILQ qdev: Push QMP mode checks into qbus_list_bus/dev qdev: Allow device specification by qtree path for device_del qdev: Introduce qdev_iterate_recursive monitor: Fix leakage during completion processing monitor: Fix command completion vs. boolean switches monitor: Add completion support for option lists monitor: Add completion for qdev paths monitor: Allow to specify HMP-specifc command arguments monitor: return length of printed string via monitor_[v]printf monitor: Establish cmd flags and convert the async tag monitor: Allow to exclude commands from QMP Add base64 encoder/decoder QMP: Reserve namespace for complex object classes QMP: Add QBuffer monitor: Add basic device state visualization QMP: Teach basic capability negotiation to python example QMP: Fix python helper /wrt long return strings QMP: Add support for buffer class to qmp python helper Makefile | 5 +- Makefile.objs | 4 +- QMP/qmp-shell | 1 + QMP/qmp-spec.txt | 24 ++- QMP/qmp.py | 29 +++- QMP/vm-info | 1 + base64.c | 202 +++++++++++++++++++ base64.h | 19 ++ check-qbuffer.c | 172 ++++++++++++++++ configure | 2 +- docs/qdev-device-use.txt | 13 ++- hw/acpi_piix4.c | 2 +- hw/hw.h | 2 + hw/i2c.c | 2 +- hw/pci-hotplug.c | 2 +- hw/qdev.c | 488 ++++++++++++++++++++++++++++++++++++++-------- hw/qdev.h | 16 ++- hw/ssi.c | 6 +- monitor.c | 258 +++++++++++++++++++++---- monitor.h | 8 +- qbuffer.c | 116 +++++++++++ qbuffer.h | 33 +++ qemu-monitor.hx | 34 +++- qemu-tool.c | 6 +- qerror.c | 8 +- qerror.h | 6 +- qjson.c | 15 ++ qobject.h | 1 + 28 files changed, 1315 insertions(+), 160 deletions(-) create mode 100644 base64.c create mode 100644 base64.h create mode 100644 check-qbuffer.c create mode 100644 qbuffer.c create mode 100644 qbuffer.h