From: Mika Westerberg <mika.westerb...@linux.intel.com>
Date: Wed, 27 Sep 2017 14:32:41 +0300

> Just for my education, is there some rule which tells when __packed is
> to be used? For example the above structures are all 32-bit aligned but
> how about something like:
> 
> struct foo {
>       u32 value1;
>       u8 value2;
> };
> 
> If the on-wire format requires such structures I assume __packed
> is needed here?

Usually header elements are 32-bit aligned in a protocol, so it wouldn't
be specified like that.

The only legitimate case I've seen is where things are purposefully
misaligned within the header, like this:

struct foo {
        u16     x;
        u64     y;
        u16     z;
};

Where the 'y' element is 2-byte aligned.

Fortunately, those situations are extremely rare.

Reply via email to