All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: kwolf@redhat.com, peter.maydell@linaro.org, aliguori@us.ibm.com,
	qemu-devel@nongnu.org, blauwirbel@gmail.com
Subject: Re: [Qemu-devel] [PATCH v4 24/26] qidl: add QAPI-based code generator
Date: Mon, 15 Oct 2012 11:35:46 -0500	[thread overview]
Message-ID: <20121015163546.GA27254@illuin> (raw)
In-Reply-To: <507C0AE3.7080903@redhat.com>

On Mon, Oct 15, 2012 at 03:08:51PM +0200, Paolo Bonzini wrote:
> Il 15/10/2012 10:12, Paolo Bonzini ha scritto:
> > Il 12/10/2012 23:11, Michael Roth ha scritto:
> >> +        elif field['type'].startswith('enum '):
> >> +            typename = 'int'
> > 
> > Note that there is support for enum properties in qdev.  Please consider
> > adding it, though it can be done as a follow-up.
> > 
> > I'm going to play a bit with the series and convert 1 or 2 devices
> > myself to see how it looks, then I'll give my acked-by.
> 
> Ok, so now I played with it a bit.  My main comments, which can all be
> tackled as a follow-up, are:
> 
> - immutable/derived/broken/elsewhere (and the default, let's call it
> serialized) are really five cases of the same QIDL property.  Perhaps
> this could be enforced in the extended syntax like this:
> 
>     #define q_immutable QIDL(serialize(immutable))
>     #define q_derived QIDL(serialize(derived))
>     #define q_broken QIDL(serialize(broken))
>     #define q_elsewhere QIDL(serialize(elsewhere))
> 
> I would also make it possible to explicitly specify the fifth state, if
> only for symmetry.

Agreed, that's a more proper grouping. Though, for consistency with
QIDL(property, ...), I would do QIDL(serialize, ...)

> 
> I'm not sure what your plans are for q_derived vs. VMState.  If a field
> X is set in pre_save hooks based on field Y, how should the fields be
> set?  X is usually not up-to-date, so it should be q_derived.  But Y
> cannot be serialized as is, so it should be q_elsewhere.  One of the
> two is wrong, which one? :)
> 
> - q_properties are also always q_immutable.  I think this should be
> enforced in the code generator.

Agreed.

> 
> - it would be _much_ better if you could automatically derive properties
> information for embedded structs.  For example, Notifiers and qemu_irqs
> are always q_immutable.  NotifierLists probably are always q_elsewhere,
> because the owner of the notifiers should add themselves back.

q_inherit maybe? Otherwise we're overriding "q_default" in subtle
ways that may not always be desired.

> 
> In general, if struct X is QIDL_DECLAREd and only has q_immutable
> fields, it can be taken as q_immutable.  Hence for example the base
> class should not need any decoration; ISADevice will be seen as
> q_immutable, but PCIDevice will be seen as serialized.  But even if a
> struct is not QIDL_DECLAREd, it  should be possible to apply a tag to a
> typedef, and have it always applied to the members.

I'd prefer to stick with a common declaration macro to handle tagging.
How about QIDL_DECLARE(MyImmutableType, q_immutable) to apply a tag to
all members?

> 
> Paolo
> 

  reply	other threads:[~2012-10-15 16:36 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-12 21:10 [Qemu-devel] [PATCH v4 00/26] Add infrastructure for QIDL-based device serialization Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 01/26] qapi: qapi-visit.py -> qapi_visit.py so we can import Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 02/26] qapi: qapi-types.py -> qapi_types.py Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 03/26] qapi: qapi-commands.py -> qapi_commands.py Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 04/26] qapi: qapi_visit.py, make code useable as module Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 05/26] qapi: qapi_visit.py, support arrays and complex qapi definitions Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 06/26] qapi: qapi_visit.py, support generating static functions Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 07/26] qapi: qapi_visit.py, support for visiting non-pointer/embedded structs Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 08/26] qapi: add visitor interfaces for C arrays Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 09/26] qapi: QmpOutputVisitor, implement array handling Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 10/26] qapi: QmpInputVisitor, " Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 11/26] qapi: QmpInputVisitor, don't re-allocate memory in start_struct Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 12/26] qapi: fix potential segfault for visit_type_size() Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 13/26] qapi: ordereddict, add to_json() method Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 14/26] qapi: qapi.py, make json parser more robust Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 15/26] qapi: add open-coded visitor for struct tm types Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 16/26] qapi: Improve existing docs and document annotated QAPI types Michael Roth
2012-10-12 21:10 ` [Qemu-devel] [PATCH v4 17/26] qom-fuse: force single-threaded mode to avoid QMP races Michael Roth
2012-10-12 21:11 ` [Qemu-devel] [PATCH v4 18/26] qom-fuse: workaround for truncated properties > 4096 Michael Roth
2012-10-12 21:11 ` [Qemu-devel] [PATCH v4 19/26] module additions for schema registration Michael Roth
2012-10-12 21:11 ` [Qemu-devel] [PATCH v4 20/26] qdev: move Property-related declarations to qdev-properties.h Michael Roth
2012-10-12 21:11 ` [Qemu-devel] [PATCH v4 21/26] qidl: add documentation Michael Roth
2012-10-12 21:11 ` [Qemu-devel] [PATCH v4 22/26] qidl: add lexer library (based on QC parser) Michael Roth
2012-10-16  7:26   ` Paolo Bonzini
2012-10-12 21:11 ` [Qemu-devel] [PATCH v4 23/26] qidl: add C parser " Michael Roth
2012-10-12 21:11 ` [Qemu-devel] [PATCH v4 24/26] qidl: add QAPI-based code generator Michael Roth
2012-10-15  8:12   ` Paolo Bonzini
2012-10-15 13:08     ` Paolo Bonzini
2012-10-15 16:35       ` Michael Roth [this message]
2012-10-15 19:37         ` Michael Roth
2012-10-16  7:20         ` Paolo Bonzini
2012-10-19  3:06           ` Michael Roth
2012-10-19  9:01             ` Paolo Bonzini
2012-10-12 21:11 ` [Qemu-devel] [PATCH v4 25/26] qidl: qidl.h, definitions for qidl annotations Michael Roth
2012-10-12 21:11 ` [Qemu-devel] [PATCH v4 26/26] qidl: unit tests and build infrastructure Michael Roth
2012-10-15 10:05   ` Paolo Bonzini
2012-10-15 16:37     ` Michael Roth
2012-10-16  7:21       ` Paolo Bonzini
2012-10-19  3:12         ` Michael Roth
2012-10-15  8:09 ` [Qemu-devel] [PATCH v4 00/26] Add infrastructure for QIDL-based device serialization Paolo Bonzini

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=20121015163546.GA27254@illuin \
    --to=mdroth@linux.vnet.ibm.com \
    --cc=aliguori@us.ibm.com \
    --cc=blauwirbel@gmail.com \
    --cc=kwolf@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.