qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [QAPI+QGA 2/3] QAPI code generation infrastructure v7


From: Luiz Capitulino
Subject: Re: [Qemu-devel] [QAPI+QGA 2/3] QAPI code generation infrastructure v7
Date: Wed, 20 Jul 2011 14:54:52 -0300

On Tue, 19 Jul 2011 14:50:28 -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-v7
> 
> (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.)

Applied to the qmp/monitor branch, thanks.

> ___
> 
> 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 V6:
>  - Fix potential build issue where qapi scripts race each other in creating
>    output directory when using make -jN
>  - Fix potential build issue resulting from $(GENERATED_HEADERS) not being
>    a listed dependency
>  - Enums return human readable values rather than stringified constants
> 
> CHANGES SINCE V5:
>  - Enums are now represented as stringified constants on the wire instead of
>    integers
>  - QObjects passed in to qmp_input_visitor_new() are now qobject_incref()'d,
>    and qobject_decref()'d in qmp_input_visitor_cleanup()
>  - Whitespace fixes
>  - Fixed incorrect email addr in generated copyright headers
> 
> CHANGES SINCE V4:
>  - Fix segfault in output visitor when dealing with QAPI-defined C structures
>    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                    |   27 +++-
>  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 |  147 ++++++++++++++++
>  qapi/qapi-dealloc-visitor.h |   26 +++
>  qapi/qapi-types-core.h      |   20 +++
>  qapi/qapi-visit-core.c      |  118 +++++++++++++
>  qapi/qapi-visit-core.h      |   76 +++++++++
>  qapi/qmp-core.h             |   41 +++++
>  qapi/qmp-dispatch.c         |  124 ++++++++++++++
>  qapi/qmp-input-visitor.c    |  301 +++++++++++++++++++++++++++++++++
>  qapi/qmp-input-visitor.h    |   27 +++
>  qapi/qmp-output-visitor.c   |  239 +++++++++++++++++++++++++++
>  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    |  385 
> +++++++++++++++++++++++++++++++++++++++++++
>  scripts/qapi-types.py       |  270 ++++++++++++++++++++++++++++++
>  scripts/qapi-visit.py       |  247 +++++++++++++++++++++++++++
>  scripts/qapi.py             |  203 +++++++++++++++++++++++
>  test-qmp-commands.c         |  113 +++++++++++++
>  test-visitor.c              |  306 ++++++++++++++++++++++++++++++++++
>  28 files changed, 3242 insertions(+), 2 deletions(-)
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]