On Tue, 5 Jul 2011 08:02:27 -0500 Michael Roth <mdr...@linux.vnet.ibm.com> wrote:
> This is Set 2/3 of the QAPI+QGA patchsets. > > These patches apply on top of master (set1 merged), and can also be obtained > from: > git://repo.or.cz/qemu/mdroth.git qapi-backport-set2-v5 This doesn't build due to a bug in error.h. If you didn't get it you're probably testing against a not up to date branch... I have the fix for error.h and will submit it. Only a few small issues remain, I think the next version will be good to go, although I'd only merge it along with the guest agent patches. > > (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 Visitor/dispatch infrastructure to handle > marshaling/unmarshaling/dispatch between QAPI and the QMP/QGA wire > protocols. > > - Documentation and unit tests for visitor functions and synchronous > command/type generation. > > CHANGES SINCE V4: > - Fix segfault in output visitor when dealing with QAPI-defined C structs > with NULL pointers > > CHANGES SINCE V3: > - Added copyright headers for generated code and remaining files > - Added checking for required/extra parameters in top-level of QMP QObject > - Made QDict arg to input visitor constructor a const > - Renamed qmp_dispatch_err() -> do_qmp_dispatch() > - Changed QERR_QAPI_STACK_OVERRUN to QERR_BUFFER_OVERRUN > - Moved configure changes to create QAPI directory when using a different > build > root to first patch which uses it. > - Squashed Makefile changes for test-visitor/test-qmp-commands into single > commits > - Removed redundant NULL checks for qemu_free() in dealloc visitor > > CHANGES SINCE V2: > - Added cleanup functions for input/output visitor types and fixed a leak in > dispatch path. > - Corrected spelling from visiter->visitor and updated filenames accordingly. > - Re-organized patches so that each new C file can be built as part of the > introducting commit (for instances where there were no users of the > qapi-obj-y target yet a test build was done by adding the target as a > superficial dependency on other tools), and moved code generator patches > after the required dependencies. > - Made qlist_first/qlist_next accept/return const types. > - Moved Visitor interface inline wrapper functions to real ones. > - Fixed error-reporting for invalid parameters when parameter name is null. > - Removed hard-coded size for QAPI-type allocations done by the input > visitor, > using generated code to pass in a sizeof() now. > - Replaced assert()'s on visitor stack overruns, replaced with an error > indication. > - Fixed build issue when using a separate build directory. > - Added missing copyright headers for scripts, moved external code in > ordereddict.py to a seperate patch. > - Many thanks to Luiz, Anthony, and everyone else for the excellent > review/testing. > > 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 | 24 +++- > Makefile.objs | 9 + > Makefile.target | 1 + > configure | 14 ++ > docs/qapi-code-gen.txt | 316 +++++++++++++++++++++++++++++++++++ > module.h | 2 + > qapi-schema-test.json | 22 +++ > qapi/qapi-dealloc-visitor.c | 138 ++++++++++++++++ > qapi/qapi-dealloc-visitor.h | 26 +++ > qapi/qapi-types-core.h | 21 +++ > qapi/qapi-visit-core.c | 114 +++++++++++++ > qapi/qapi-visit-core.h | 68 ++++++++ > qapi/qmp-core.h | 41 +++++ > qapi/qmp-dispatch.c | 124 ++++++++++++++ > qapi/qmp-input-visitor.c | 264 ++++++++++++++++++++++++++++++ > qapi/qmp-input-visitor.h | 27 +++ > qapi/qmp-output-visitor.c | 216 ++++++++++++++++++++++++ > qapi/qmp-output-visitor.h | 28 +++ > qapi/qmp-registry.c | 40 +++++ > qerror.h | 3 + > qlist.h | 11 ++ > scripts/ordereddict.py | 128 +++++++++++++++ > scripts/qapi-commands.py | 381 > +++++++++++++++++++++++++++++++++++++++++++ > scripts/qapi-types.py | 258 +++++++++++++++++++++++++++++ > scripts/qapi-visit.py | 261 +++++++++++++++++++++++++++++ > scripts/qapi.py | 203 +++++++++++++++++++++++ > test-qmp-commands.c | 113 +++++++++++++ > test-visitor.c | 305 ++++++++++++++++++++++++++++++++++ > 28 files changed, 3157 insertions(+), 1 deletions(-) >