[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v7 31/31] RFC: qapi: Adjust layout of FooList ty
From: |
David Gibson |
Subject: |
Re: [Qemu-devel] [PATCH v7 31/31] RFC: qapi: Adjust layout of FooList types |
Date: |
Tue, 8 Dec 2015 15:54:24 +1100 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
On Mon, Dec 07, 2015 at 08:55:21PM -0700, Eric Blake wrote:
> By sticking the next pointer first, we don't need a union with
> 64-bit padding for smaller types. On 32-bit platforms, this
> can reduce the size of uint8List from 16 bytes (or 12, depending
> on whether 64-bit ints can tolerate 4-byte alignment) down to 8.
> It has no effect on 64-bit platforms (where alignment still
> dictates a 16-byte struct); but fewer anonymous unions is still
> a win in my book.
>
> However, this requires visit_start_list() and visit_next_list()
> to gain a size parameter, to know what size element to allocate.
>
> I debated about going one step further, to allow for fewer casts,
> by doing:
> typedef GenericList GenericList;
> struct GenericList {
> GenericList *next;
> };
> struct FooList {
> GenericList base;
> Foo value;
> };
> so that you convert to 'GenericList *' by '&foolist->base', and
> back by 'container_of(generic, GenericList, base)' (as opposed to
> the existing '(GenericList *)foolist' and '(FooList *)generic').
> But doing that would require hoisting the declaration of
> GenericList prior to inclusion of qapi-types.h, rather than its
> current spot in visitor.h; it also makes iteration a bit more
> verbose through 'foolist->base.next' instead of 'foolist->next'.
>
> Signed-off-by: Eric Blake <address@hidden>
For the spapr change
Acked-by: David Gibson <address@hidden>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature
- [Qemu-devel] [PATCH v7 25/31] qapi: Canonicalize missing object to :empty, (continued)
- [Qemu-devel] [PATCH v7 25/31] qapi: Canonicalize missing object to :empty, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 28/31] qapi: Split visit_end_struct() into pieces, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 29/31] qapi: Simplify semantics of visit_next_list(), Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 16/31] qmp: Don't abuse stack to track qmp-output root, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 17/31] qapi: Document visitor interfaces, add assertions, Eric Blake, 2015/12/07
- [Qemu-devel] [PATCH v7 31/31] RFC: qapi: Adjust layout of FooList types, Eric Blake, 2015/12/07
- Re: [Qemu-devel] [PATCH v7 31/31] RFC: qapi: Adjust layout of FooList types,
David Gibson <=
- [Qemu-devel] [PATCH v7 30/31] qapi: Change visit_type_FOO() to no longer return partial objects, Eric Blake, 2015/12/07