This is Set 2/3 of the QAPI+QGA patchsets. These patches apply on top of qapi-backport-set1-v1, and can also be obtained from: git://repo.or.cz/qemu/mdroth.git qapi-backport-set2-v2
(Set1+2 are a backport of some of the QAPI-related work from Anthony's glib tree. The main goal is to get the basic code generation infrastructure in place so that it can be used by the guest agent to implement a QMP-like guest interface, and so that future work regarding the QMP conversion to QAPI can be decoupled from the infrastructure bits. Set3 is the Qemu Guest Agent (virtagent), rebased on the new code QAPI code generation infrastructure. This is the first user of QAPI, QMP will follow.) ___ This patchset introduces the following: - Hard dependency on GLib. This has been floating around the list for a while. Currently the only users are the unit tests for this patchset and the guest agent. We can make both of these a configure option, but based on previous discussions a hard dependency will likely be introduced with subsequent QAPI patches. - A couple additional qlist utility functions used by QAPI. - QAPI schema-based code generation for synchronous QMP/QGA commands and types, and Visiter/dispatch infrastructure to handle marshaling/unmarshaling/dispatch between QAPI and the QMP/QGA wire protocols. - Documentation and unit tests for visiter functions and synchronous command/type generation. CHANGES SINCE V1: - Fixed build issue that was missed due to deprecated files being present in source tree. Thanks to Matsuda Daiki for sending fixes. - Fixed grammatical errors in documentation pointed out by Luiz. - Added generated code to the make clean target. CHANGES SINCE V0 ("QAPI Infrastructure Round 1"): - Fixed known memory leaks in generated code - Stricter error-handling in generated code - Removed currently unused code (generators for events and async/proxied QMP/QGA commands and definition used by the not-yet-introduced QMP server replacement) - Added documentation for code generation scripts/schemas/usage - Addressed review comments from Luiz and Stefan Makefile | 22 ++ Makefile.objs | 9 + Makefile.target | 1 + configure | 13 ++ docs/qapi-code-gen.txt | 316 +++++++++++++++++++++++++++++ module.h | 2 + qapi-schema-test.json | 16 ++ qapi/qapi-dealloc-visiter.c | 127 ++++++++++++ qapi/qapi-dealloc-visiter.h | 26 +++ qapi/qapi-types-core.h | 21 ++ qapi/qapi-visit-core.h | 187 +++++++++++++++++ qapi/qmp-core.h | 43 ++++ qapi/qmp-dispatch.c | 73 +++++++ qapi/qmp-input-visiter.c | 239 ++++++++++++++++++++++ qapi/qmp-input-visiter.h | 26 +++ qapi/qmp-output-visiter.c | 180 +++++++++++++++++ qapi/qmp-output-visiter.h | 27 +++ qapi/qmp-registry.c | 27 +++ qlist.h | 11 + scripts/ordereddict.py | 128 ++++++++++++ scripts/qapi-commands.py | 468 +++++++++++++++++++++++++++++++++++++++++++ scripts/qapi-types.py | 221 ++++++++++++++++++++ scripts/qapi-visit.py | 223 ++++++++++++++++++++ scripts/qapi.py | 181 +++++++++++++++++ test-qmp-commands.c | 113 +++++++++++ test-visiter.c | 214 ++++++++++++++++++++ 26 files changed, 2914 insertions(+), 0 deletions(-)