On Fri, Sep 18, 2020 at 03:51:54AM +0700, Vadim Yanitskiy wrote:
we seem to have problems with structure alignment in
the new version of
the PCUIF protocol:
PCUIFv9: sizeof(struct gsm_pcu_if) -> 212; 212 % 4 == 0
PCUIFv10: sizeof(struct gsm_pcu_if) -> 1006; 1006 % 4 != 0
the total size of the struct doesn't really matter that much.
I think we would need to add/remove some padding. The question is
whether we should make sure that all structures are aligned, or having
the top level struct gsm_pcu_if aligned would be enough?
I think what is important is that the individual fields / members are aligned
at the natural alignment boundary of the most common architectures (so,
let's say to DWORD boundary). Of course, for an uint8_t it may not be as relevant as
for an
unaligned uint32_t in the middle of a struct.
Otherwise each access to a member will cause unaligned accesses, which may
be more expensive depending on your architecture. Even though ARMV7 suppors
unaligned loads/stores, they are apparently still slower than aligned ones.
For an INFO_IND that doesn't matter, but for primitives/message we exchange
at high frequency it may matter.
Regards,
Harald
--
- Harald Welte <laforge(a)gnumonks.org>
http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)