From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: aliguori@linux.vnet.ibm.com, Jes.Sorensen@redhat.com,
agl@linux.vnet.ibm.com, mdroth@linux.vnet.ibm.com,
lcapitulino@redhat.com
Subject: [Qemu-devel] [QAPI+QGA 2/3] QAPI code generation infrastructure
Date: Wed, 1 Jun 2011 12:24:28 -0500 [thread overview]
Message-ID: <1306949089-15597-1-git-send-email-mdroth@linux.vnet.ibm.com> (raw)
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-v1
(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 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 | 21 ++
Makefile.objs | 9 +
Makefile.target | 1 +
configure | 13 ++
docs/qapi-code-gen.txt | 315 +++++++++++++++++++++++++++++
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 | 464 +++++++++++++++++++++++++++++++++++++++++++
scripts/qapi-types.py | 217 ++++++++++++++++++++
scripts/qapi-visit.py | 219 ++++++++++++++++++++
scripts/qapi.py | 181 +++++++++++++++++
test-qmp-commands.c | 113 +++++++++++
test-visiter.c | 214 ++++++++++++++++++++
26 files changed, 2900 insertions(+), 0 deletions(-)
next reply other threads:[~2011-06-01 17:26 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-01 17:24 Michael Roth [this message]
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 01/21] Add hard build dependency on glib Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 02/21] qlist: add qlist_first()/qlist_next() Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 03/21] qapi: add module init types for qapi Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 04/21] qapi: add ordereddict/qapi.py helper libraries Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 05/21] qapi: add qapi-types.py code generator Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 06/21] qapi: add qapi-visit.py " Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 07/21] qapi: add qapi-commands.py " Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 08/21] qapi: add qapi-types-core.h Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 09/21] qapi: add qapi-visit-core.h Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 10/21] qapi: add QMP input visiter Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 11/21] qapi: add QMP output visiter Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 12/21] qapi: add QAPI dealloc visiter Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 13/21] qapi: add command registration/lookup functions Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 14/21] qapi: add QMP dispatch functions Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 15/21] qapi: add base declaration/types for QMP Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 16/21] qapi: test schema used for unit tests Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 17/21] qapi: add test-visiter, tests for gen. visiter code Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 18/21] qapi: Makefile changes to build test-visiter Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 19/21] qapi: add test-qmp-commands, tests for gen. marshalling/dispatch code Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 20/21] qapi: Makefile changes to build test-qmp-commands Michael Roth
2011-06-01 17:24 ` [Qemu-devel] [PATCH v1][ 21/21] qapi: add QAPI code generation documentation Michael Roth
2011-06-02 13:25 ` Lluís
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1306949089-15597-1-git-send-email-mdroth@linux.vnet.ibm.com \
--to=mdroth@linux.vnet.ibm.com \
--cc=Jes.Sorensen@redhat.com \
--cc=agl@linux.vnet.ibm.com \
--cc=aliguori@linux.vnet.ibm.com \
--cc=lcapitulino@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).