All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jamie Lokier <jamie@shareable.org>
To: Juan Quintela <quintela@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 00/25] VMState cleanups and conversion of network drivers
Date: Mon, 19 Oct 2009 20:15:04 +0100	[thread overview]
Message-ID: <20091019191504.GA8157@shareable.org> (raw)
In-Reply-To: <cover.1255976538.git.quintela@redhat.com>

Juan Quintela wrote:
>  * add VARRAY_UINT16_UNSAFE: unsafe here means that type checking is off
>    (a.k.a. as a cast in C).  In this case the problem is that the last
>    element of one struct is int foo[0], and we allocate the right size
>    for the array we want.  Problem?  I haven't been able to abuse^Wuse
>    gcc + cpp + magic to typecheck that for vmstate:
> 
>    We have
>    struct FOO {
>    	  int32_t foo[0];
>    }
>    We want to "compare the type of foo (t1) with int32_t (t2)
> 
>         ((t1(*)[n])0 - (t2*)0)
>    This one don't work, because we don't have 'n'
>         ((t1(**))0 - (t2*)0)
>    This don't work either because t1 is one array.
>         ((t1(*)[])0 - (t2*)0)
>    Too clever, imposible cast to on array type.
>    I tried some other variants, but have not able to get one that compiles.

Since you mention GCC, is it ok to use GCC extensions?  __typeof__(t1)
often does the trick for this sort of thing where t1 alone does not
compile, even if t1 is a type.

__builtin_types_compatible_p(), __builtin_choose_exper and
__attribute__((__error__)) are good for informative error messages.

-- Jamie

  parent reply	other threads:[~2009-10-19 19:15 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-19 18:42 [Qemu-devel] [PATCH 00/25] VMState cleanups and conversion of network drivers Juan Quintela
2009-10-19 18:42 ` [Qemu-devel] [PATCH 01/25] vmstate: Add support for partial buffers transmission Juan Quintela
2009-10-19 18:42 ` [Qemu-devel] [PATCH 02/25] serial: use post_load version_id field and remove pre_load function Juan Quintela
2009-10-19 18:42 ` [Qemu-devel] [PATCH 03/25] vnmstate: fix name for uint8_equal Juan Quintela
2009-10-19 18:42 ` [Qemu-devel] [PATCH 04/25] vmstate: add VMSTATE_UINT16_EQUAL[_V] Juan Quintela
2009-10-19 18:42 ` [Qemu-devel] [PATCH 05/25] vmstate: Rename VMS_VARRAY to VMS_VARRAY_INT32 Juan Quintela
2009-10-19 18:42 ` [Qemu-devel] [PATCH 06/25] vmstate: fix indentation Juan Quintela
2009-10-19 18:42 ` [Qemu-devel] [PATCH 07/25] vmstate: factor vmstate_offset_value Juan Quintela
2009-10-19 18:42 ` [Qemu-devel] [PATCH 08/25] vmstate: factor vmstate_offset_pointer Juan Quintela
2009-10-19 18:42 ` [Qemu-devel] [PATCH 09/25] vmstate: factor vmstate_offset_array Juan Quintela
2009-10-19 18:42 ` [Qemu-devel] [PATCH 10/25] vmstate: factor vmstate_offset_buffer Juan Quintela
2009-10-19 18:42 ` [Qemu-devel] [PATCH 11/25] vmstate: factor VMSTATE_*BUFFER* definitions Juan Quintela
2009-10-19 18:42 ` [Qemu-devel] [PATCH 12/25] vmstate: Unfold VMSTATE_INT32_VARRAY() only use and remove it Juan Quintela
2009-10-19 18:42 ` [Qemu-devel] [PATCH 13/25] vmstate: add VMS_VARRAY_UINT16_UNSAFE (varrays with uint16 indexes) Juan Quintela
2009-10-19 18:42 ` [Qemu-devel] [PATCH 14/25] vmstate: Add version arg to VMSTATE_SINGLE_TEST() Juan Quintela
2009-10-19 18:43 ` [Qemu-devel] [PATCH 15/25] vmstate: Add VMSTATE_BUFFER_UNUSED Juan Quintela
2009-10-19 18:43 ` [Qemu-devel] [PATCH 16/25] vmstate: Introduce the concept of sub-arrays Juan Quintela
2009-10-19 18:43 ` [Qemu-devel] [PATCH 17/25] rtl8139: port TallyCounters to vmstate Juan Quintela
2009-10-19 18:43 ` [Qemu-devel] [PATCH 18/25] rtl8139: port " Juan Quintela
2009-10-19 18:43 ` [Qemu-devel] [PATCH 19/25] eeprom93xx: " Juan Quintela
2009-10-19 18:43 ` [Qemu-devel] [PATCH 20/25] eepro100: " Juan Quintela
2009-10-19 18:43 ` [Qemu-devel] [PATCH 21/25] pcnet: " Juan Quintela
2009-10-19 18:43 ` [Qemu-devel] [PATCH 22/25] ne2000: " Juan Quintela
2009-10-19 18:43 ` [Qemu-devel] [PATCH 23/25] e1000: unfold mac_reg_tosave array Juan Quintela
2009-10-19 18:43 ` [Qemu-devel] [PATCH 24/25] e1000: unfold mac_regarraystosave array Juan Quintela
2009-10-19 18:43 ` [Qemu-devel] [PATCH 25/25] e1000: port to vmstate Juan Quintela
2009-10-19 19:15 ` Jamie Lokier [this message]
2009-10-19 20:34   ` [Qemu-devel] Re: [PATCH 00/25] VMState cleanups and conversion of network drivers Juan Quintela
2009-10-19 21:11     ` Jamie Lokier
2009-10-20 15:41   ` 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=20091019191504.GA8157@shareable.org \
    --to=jamie@shareable.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    /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.