On Mon, Feb 29, 2016 at 1:41 PM, Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx> wrote: > ----- On Feb 29, 2016, at 5:39 AM, Arnd Bergmann arnd@xxxxxxxx wrote: > >> On Monday 29 February 2016 11:32:21 Peter Zijlstra wrote: >>> On Sun, Feb 28, 2016 at 12:39:54AM +0000, Mathieu Desnoyers wrote: >>> >>> > /* This structure needs to be aligned cache line size. */ >>> > struct thread_local_abi { >>> > int32_t cpu_id; >>> > uint32_t rseq_seqnum; >>> > uint64_t rseq_post_commit_ip; >>> > /* Add new fields at the end. */ >>> > } __attribute__((packed)); >>> >>> I would really not use packed; that can lead to horrible layout. >>> >>> Suppose someone would add: >>> >>> uint32_t foo; >>> uint64_t bar; >>> >>> With packed, you get an unaligned uint64_t in there, which is horrible. >>> Without packed, you get a hole, which you can later fill. >> > > Actually, Peter is wrong about the hole there. On some 32-bit architectures, > 64-bit integers are aligned on 32-bit, not 64-bit. So there may or may not ... or even on 16-bit. > be a hole there, and that would lead to a mess. indeed. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html