Re: [RFC PATCH v6 1/5] Thread-local ABI system call: cache CPU number of running thread

From: Peter Zijlstra
Date: Thu Apr 07 2016 - 08:25:36 EST


On Thu, Apr 07, 2016 at 02:03:53PM +0200, Florian Weimer wrote:
> > struct tlabi {
> > union {
> > __u8[64] __foo;
> > struct {
> > /* fields go here */
> > };
> > };
> > } __aligned__(64);
>
> That's not really âfixed sizeâ as far as an ABI is concerned, due to the
> possibility of future extensions.

sizeof(struct tlabi) is always the same, right? How is that not fixed?

> > People objected against the fixed size scheme, but it being possible to
> > get a fixed TCB offset and reduce indirections is a big win IMO.
>
> It's a difficult trade-off. It's not an indirection as such, it's avoid
> loading the dynamic TLS offset.

What we _want_ is being able to use %[gf]s:offset and have it work (I
forever forget which segment register userspace TLS uses).

> Let me repeat that the ELF TLS GNU ABI has very limited support for
> static offsets at present, and it is difficult to make them available
> more widely without code generation at run time (in the form of text
> relocations, but still).

Do you have a pointer to something I can read? Because I'm clearly not
understanding the full issue here.