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.