Not having this led to bus errors on unaligned atomic u64 access
on architectures with 4B pointers.
struct lp_chunk *next;
struct linpool *lp;
uintptr_t data_align[0];
+ _Atomic u64 data_align_atomic[0];
byte data[0];
};
struct mblock {
resource r;
unsigned size;
- uintptr_t data_align[0];
+ union {
+ uintptr_t bigint;
+ _Atomic u64 atom;
+ } _align[0];
byte data[0];
};
struct sl_alignment { /* Magic structure for testing of alignment */
byte data;
int x[0];
+ _Atomic u64 y[0];
+ void *z[0];
};
#define TLIST_PREFIX sl_head