Date: Mon, 17 May 2004 15:17:29 -0700 From: Peter Wemm <peter@wemm.org> To: Doug Rabson <dfr@nlsystems.com> Cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/kern kern_linker.c Message-ID: <200405171517.29528.peter@wemm.org> In-Reply-To: <200405172259.00791.dfr@nlsystems.com> References: <Pine.BSF.4.21.0405171431040.27448-100000@InterJet.elischer.org> <200405172259.00791.dfr@nlsystems.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 17 May 2004 02:59 pm, Doug Rabson wrote: > I've been thinking about that on and off for a while. It would be > fairly easy to represent most of struct pcpu using TLS... I thought about it a bit too. One potential landmine is making sure that gcc can be adequately taught to be preemption safe and not cache pointers to the tls area across things like critical_*(). I guess that depends on which model is used though. User-level threads dont have to worry about this, because if they're preempted, they are still the same thread when they come back. pcpu isn't like this. And to think that I was considering benchmarking a change to do an alpha-style stolen-register for the pcpu pointer on amd64. :-) > On Monday 17 May 2004 22:31, Julian Elischer wrote: > > which brings up the question of TLS in the kernel :-) > > > > On Mon, 17 May 2004, Peter Wemm wrote: > > > peter 2004/05/17 14:24:40 PDT > > > > > > FreeBSD src repository > > > > > > Modified files: > > > sys/kern kern_linker.c > > > Log: > > > Since we go to the trouble of compiling the kobj ops table for > > > each class, and cannot handle it going away, add an explicit > > > reference to the kobj class inside each linker class. Without > > > this, a class with no modules loaded will sit with an idle > > > refcount of 0. Loading and unloading a module with it causes a > > > 0->1->0 transition which frees the ops table and causes > > > subsequent loads using that class to explode. Normally, the > > > "kernel" module will remain forever loaded and prevent this > > > happening, but if you have more than one linker class active, > > > only one owns the "kernel". > > > > > > This finishes making modules work for kldload(8) on amd64. > > > > > > Revision Changes Path > > > 1.111 +1 -0 src/sys/kern/kern_linker.c -- Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com "All of this is for nothing if we don't go to the stars" - JMS/B5
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200405171517.29528.peter>