On 08/26/2011 09:48 AM, Jan Kiszka wrote:
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.
I have a series that does the same thing as this in a totally different way. Instead of a VMState interpreter, it converts all marshalling to go through a Visitor interface. This makes it extensible to devices that don't currently support VMState.
Regards, Anthony Liguori
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