On Wed, May 29, 2013 at 03:41:09PM +0200, Paolo Bonzini wrote:
> Il 29/05/2013 15:24, Michael S. Tsirkin ha scritto:
> > You expect a compiler to pad this structure:
> >
> > struct foo {
> > uint8_t a;
> > uint8_t b;
> > uint16_t c;
> > uint32_t d;
> > };
> >
> > I'm guessing any compiler that decides to waste memory in this way
> > will quickly get dropped by users and then we won't worry
> > about building QEMU with it.
>
> You know the virtio-pci config structures are padded, but not all of
> them are. For example, virtio_balloon_stat is not padded and indeed has
> an __attribute__((__packed__)) in the spec.
>
> For this reason I prefer to have the attribute everywhere. So people
> don't have to wonder why it's here and not there.
>
> Paolo
BTW we don't even do this consistently everywhere in QEMU.
It would have been better to have a rule to avoid packed
as much as possible, then we'd have found the misaligned field bug
in balloon before it's too late.
That would be a good rule to adopt I think:
any pack if something is misaligned, and document
the reason.
--
MST
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html