From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:60921) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qeq6X-00045V-Oc for qemu-devel@nongnu.org; Thu, 07 Jul 2011 11:03:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qeq6S-0002d5-6h for qemu-devel@nongnu.org; Thu, 07 Jul 2011 11:03:01 -0400 Received: from e9.ny.us.ibm.com ([32.97.182.139]:43984) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qeq6R-0002cv-RT for qemu-devel@nongnu.org; Thu, 07 Jul 2011 11:02:56 -0400 Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e9.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id p67EVDQS029426 for ; Thu, 7 Jul 2011 10:31:13 -0400 Received: from d03av05.boulder.ibm.com (d03av05.boulder.ibm.com [9.17.195.85]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p67F2rgu152606 for ; Thu, 7 Jul 2011 11:02:53 -0400 Received: from d03av05.boulder.ibm.com (loopback [127.0.0.1]) by d03av05.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p67F2pjn013383 for ; Thu, 7 Jul 2011 09:02:52 -0600 Message-ID: <4E15CA97.7030901@linux.vnet.ibm.com> Date: Thu, 07 Jul 2011 10:02:47 -0500 From: Michael Roth MIME-Version: 1.0 References: <1309870965-27066-1-git-send-email-mdroth@linux.vnet.ibm.com> <20110707113751.0ae16a3d@doriath> In-Reply-To: <20110707113751.0ae16a3d@doriath> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [QAPI+QGA 2/3] QAPI code generation infrastructure v5 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Luiz Capitulino Cc: aliguori@linux.vnet.ibm.com, agl@linux.vnet.ibm.com, qemu-devel@nongnu.org, Jes.Sorensen@redhat.com On 07/07/2011 09:37 AM, Luiz Capitulino wrote: > On Tue, 5 Jul 2011 08:02:27 -0500 > Michael Roth 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. > Doh, I see it too. I must've missed a build test after rebasing on master. I'll keep an eye out for your patch, thanks! >> >> (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(-) >> >