Re: broken local_t on i386

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday 12 June 2006 20:59, Christoph Lameter wrote:
> On Mon, 12 Jun 2006, Andi Kleen wrote:
> > Possible, but is it worth reinventing the linker?
>
> How would that work?

Either changing the linker and telling everybody to upgrade 
or writing a mini linker that works at kernel boot time.

Upgrading binutils is imho not acceptable and doing
the runtime relocation would be a lot of code for 
questionable gain.


> IMHO The linker cannot help with virtual to physical address translations.
> A linker that will link per processor would be amazing. What happens if
> the process is rescheduled? We dynamically relink to the new processor?
>
> I thought you had some funky segment registers on i386 and x86_64. Cant
> they be switched on context switch? If an inc/dec could work relative to
> those then you would not need a virtual mapping.

The segment register needs an offset. So you need the linker to generate
the offset from the base of the per cpu segment somehow. At compile time the 
address is not known so it cannot be done then.

To work around this we do it at runtime.

User space TLS has some specialized relocations for this, but they
are so hack^wspecialized that they are not usable for the kernel.

-Andi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux