More than one year ago I posted some patches to add a monitor command callend device_show. The purpose of that command is to dump the state of some qdev device based on its vmstate.
To improve the usability of that interface, the previous series also tried to create a canonical qdev tree path name format and even added monitor command expansion. That format created quite a few discussions, and we never came to some conclusion. As device_show is still a useful tool for debugging but qdev structuring and addressing may significantly change in the near future, I decided to reanimate those patches while avoiding almost any change of the addressing scheme. The only one I propose is automatic ID assignment for anonymous devices so that any qdev device is in principle addressable (e.g. APIC and IO-APIC on x86). As back then, device_show remains HMP-only to avoid any stable ABI issues around QMP. CC: Luiz Capitulino <lcapitul...@redhat.com> CC: Markus Armbruster <arm...@redhat.com> Jan Kiszka (6): monitor: return length of printed string via monitor_[v]printf Add base64 encoder/decoder QMP: Reserve namespace for complex object classes QMP: Add QBuffer monitor: Add basic device state visualization qdev: Generate IDs for anonymous devices Makefile | 2 +- Makefile.objs | 4 +- QMP/qmp-spec.txt | 24 ++++- base64.c | 202 +++++++++++++++++++++++++++++++++++++ base64.h | 19 ++++ check-qbuffer.c | 172 ++++++++++++++++++++++++++++++++ configure | 2 +- hmp-commands.hx | 16 +++ hw/hw.h | 2 + hw/qdev-properties.c | 2 +- hw/qdev.c | 271 ++++++++++++++++++++++++++++++++++++++++++++++++-- hw/qdev.h | 3 + monitor.c | 23 +++-- monitor.h | 4 +- qbuffer.c | 117 ++++++++++++++++++++++ qbuffer.h | 33 ++++++ qemu-tool.c | 6 +- qerror.c | 4 + qerror.h | 3 + qjson.c | 15 +++ qobject.h | 1 + 21 files changed, 894 insertions(+), 31 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 -- 1.7.3.4