[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [QAPI+QGA 2/3] QAPI code generation infrastructure v5
From: |
Luiz Capitulino |
Subject: |
Re: [Qemu-devel] [QAPI+QGA 2/3] QAPI code generation infrastructure v5 |
Date: |
Thu, 7 Jul 2011 11:37:51 -0300 |
On Tue, 5 Jul 2011 08:02:27 -0500
Michael Roth <address@hidden> 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(-)
>
- [Qemu-devel] [PATCH v5 09/18] qapi: add QMP dispatch functions, (continued)
- [Qemu-devel] [PATCH v5 09/18] qapi: add QMP dispatch functions, Michael Roth, 2011/07/05
- [Qemu-devel] [PATCH v5 10/18] qapi: add ordereddict.py helper library, Michael Roth, 2011/07/05
- [Qemu-devel] [PATCH v5 11/18] qapi: add qapi.py helper libraries, Michael Roth, 2011/07/05
- [Qemu-devel] [PATCH v5 12/18] qapi: add qapi-types.py code generator, Michael Roth, 2011/07/05
- [Qemu-devel] [PATCH v5 13/18] qapi: add qapi-visit.py code generator, Michael Roth, 2011/07/05
- [Qemu-devel] [PATCH v5 14/18] qapi: add qapi-commands.py code generator, Michael Roth, 2011/07/05
- [Qemu-devel] [PATCH v5 15/18] qapi: test schema used for unit tests, Michael Roth, 2011/07/05
- [Qemu-devel] [PATCH v5 16/18] qapi: add test-visitor, tests for gen. visitor code, Michael Roth, 2011/07/05
- [Qemu-devel] [PATCH v5 17/18] qapi: add test-qmp-commands, tests for gen. marshalling/dispatch code, Michael Roth, 2011/07/05
- [Qemu-devel] [PATCH v5 18/18] qapi: add QAPI code generation documentation, Michael Roth, 2011/07/05
- Re: [Qemu-devel] [QAPI+QGA 2/3] QAPI code generation infrastructure v5,
Luiz Capitulino <=