From owner-freebsd-threads@FreeBSD.ORG Fri Apr 2 12:22:55 2004 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6343716A4CF for ; Fri, 2 Apr 2004 12:22:55 -0800 (PST) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1E64943D31 for ; Fri, 2 Apr 2004 12:22:55 -0800 (PST) (envelope-from eischen@vigrid.com) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mail.pcnet.com (8.12.10/8.12.1) with ESMTP id i32KMntf006944; Fri, 2 Apr 2004 15:22:49 -0500 (EST) Date: Fri, 2 Apr 2004 15:22:49 -0500 (EST) From: Daniel Eischen X-Sender: eischen@pcnet5.pcnet.com To: Julian Elischer In-Reply-To: <406DC12E.5060404@elischer.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: threads@freebsd.org Subject: Re: PERFORCE change 50188 for review X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Apr 2004 20:22:55 -0000 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