Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Apr 2004 15:22:49 -0500 (EST)
From:      Daniel Eischen <eischen@vigrid.com>
To:        Julian Elischer <julian@elischer.org>
Cc:        threads@freebsd.org
Subject:   Re: PERFORCE change 50188 for review
Message-ID:  <Pine.GSO.4.10.10404021517230.4657-100000@pcnet5.pcnet.com>
In-Reply-To: <406DC12E.5060404@elischer.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 2 Apr 2004, Julian Elischer wrote:

> Doug Rabson wrote:
> > On Friday 02 April 2004 19:31, Julian Elischer wrote:
> > 
> >>Doug Rabson wrote:
> >>
> >>>On Fri, 2004-04-02 at 17:47, Julian Elischer wrote:
> >>>
> >>>>And the crowd goes wild...
> >>>
> >>>I'm not convinced that rtld is quite right yet. In particular,
> >>>stuff like:
> >>>	int __thread x[10];
> >>>	&x[5];
> >>>
> >>>is probably broken.
> >>>
> >>>FWIW, our binutils doen't support the Sun abi at all...
> >>
> >>hmmm I wonder if it's planned or if we have to do it..
> > 
> > 
> > Personally, I don't see the point. The GNU abi is smaller and faster and 
> > will be better maintained by the gnu people over time. There isn't any 
> > choice for any of the other platforms, including amd64 (which uses a 
> > gnu-style abi with %fs:0 == %fs).
> 
> So we are screwed for amd64 basically.
> 
> 
> But the reason the sun ABI axists is because on a PC using %gs as a segment 
> register for thread identification, you cannot use the GNU model unless you
> are using 1:1 threads.  You need to be able to change the place the pointer
> points from userland. Obviously this requires a syscall as changing a [gl]dt
> entry can not be done by a user process. This means that every context switch 
> would require a syscall which defeats the entire point of using M:N threads.
> 
> The SUN API allows the destination of the %gs:0 to be changes at runtime by
> the user this allowing the UTS to switch threads "on the fly" without
> going back to the kernel.

Yes, please, I don't see how the one extra indirection is
really going to affect much.  This is where we intended to
go months ago (and years ago WRT KSE in general), and
everything has been designed around it.

> Processors that have a "thread pointer" register are ok because the UTS
> can just change it whenever it switches threads. Unfortunatly the X86
> requires that we use a priviledged operation.
> The only thing I can see as a possibility is if we make a special trap
> into the kernel (bypassing all the normal syscall code)
> that takes a single register as an argument and puts it into the
> segment register descriptor pointed to by %gs after checking it VERY quickly,
> and returns.. it may be possible to get in and out of the kernel quick enough 
> that we don't lose performance.

How do I get P4 commit mail?

-- 
Dan Eischen



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.10.10404021517230.4657-100000>