CRITICAL_SECTION alignment
Ulrich Weigand
weigand at immd1.informatik.uni-erlangen.de
Sun Feb 18 14:17:04 CST 2001
Josh DuBois wrote:
> Just as Ulrich suggested, the typedef of the CRITICAL_SECTION struct
> was inside a #pragma pack(1) block. On the ppc, this made
> CRITICAL_SECTIONs always (or very often) get put on 2-byte boundaries.
Aha! ;-) I'd suggest we should try and use pack() as sparingly as
possible, e.g. by surrounding only single struct definitions with it.
Those large #pragma pack() blocks can be really confusing ...
> I didn't expect #pragma pack() to affect the alignment of types - I just
> thought it would cause structures to take up the minimum required amount
> of room. Seems it makes both members within a structure _and_ separate
> structures get tightly packed. Or so I gather.
This is really the same thing. The alignment requirement of a structure
is the maximum (well, least common multiple) of the alignment requirements
of all its member. #pragma pack(1) says that for all subsequent struct
definitions, every member's alignment requirement is artificially set to 1.
Hence, the struct's alignment requirement is also 1 ...
Bye,
Ulrich
--
Dr. Ulrich Weigand
weigand at informatik.uni-erlangen.de
More information about the wine-devel
mailing list