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

2011-07-07 Thread Luiz Capitulino
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 +++
  

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

2011-07-07 Thread Michael Roth

On 07/07/2011 09:37 AM, Luiz Capitulino wrote:

On Tue,  5 Jul 2011 08:02:27 -0500
Michael Rothmdr...@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.



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 +++
  

[Qemu-devel] [QAPI+QGA 2/3] QAPI code generation infrastructure v5

2011-07-05 Thread Michael Roth
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

(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 ++