From owner-freebsd-hackers@FreeBSD.ORG Sat Jan 19 03:17:11 2013 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 4FC64875 for ; Sat, 19 Jan 2013 03:17:11 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from vps1.elischer.org (vps1.elischer.org [204.109.63.16]) by mx1.freebsd.org (Postfix) with ESMTP id 0C51A803 for ; Sat, 19 Jan 2013 03:17:10 +0000 (UTC) Received: from jre-mbp-2.int.fusionio.com ([216.51.42.66]) (authenticated bits=0) by vps1.elischer.org (8.14.5/8.14.5) with ESMTP id r0J3Gsn6056042 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Fri, 18 Jan 2013 19:16:59 -0800 (PST) (envelope-from julian@freebsd.org) Message-ID: <50FA1021.6000303@freebsd.org> Date: Fri, 18 Jan 2013 20:16:49 -0700 From: Julian Elischer User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:17.0) Gecko/20130107 Thunderbird/17.0.2 MIME-Version: 1.0 To: Trent Nelson Subject: Re: Getting the current thread ID without a syscall? References: <20130115205403.GA52904@snakebite.org> <20130115211641.GC2522@kib.kiev.ua> <20130115213513.GA53047@snakebite.org> <20130115214332.GE2522@kib.kiev.ua> <50F5D82C.7070400@mu.org> <1358289221.32417.129.camel@revolution.hippie.lan> <20130115230330.GA53211@snakebite.org> In-Reply-To: <20130115230330.GA53211@snakebite.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Konstantin Belousov , Ian Lepore , Alfred Perlstein , "freebsd-hackers@freebsd.org" X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jan 2013 03:17:11 -0000 On 1/15/13 4:03 PM, Trent Nelson wrote: > On Tue, Jan 15, 2013 at 02:33:41PM -0800, Ian Lepore wrote: >> On Tue, 2013-01-15 at 14:29 -0800, Alfred Perlstein wrote: >>> On 1/15/13 1:43 PM, Konstantin Belousov wrote: >>>> On Tue, Jan 15, 2013 at 04:35:14PM -0500, Trent Nelson wrote: >>>>> Luckily it's for an open source project (Python), so recompilation >>>>> isn't a big deal. (I also check the intrinsic result versus the >>>>> syscall result during startup to verify the same ID is returned, >>>>> falling back to the syscall by default.) >>>> For you, may be. For your users, it definitely will be a problem. >>>> And worse, the problem will be blamed on the operating system and not >>>> to the broken application. >>>> >>> Anything we can do to avoid this would be best. >>> >>> The reason is that we are still dealing with an "optimization" that perl >>> did, it reached inside of the opaque struct FILE to "do nasty things". >>> Now it is very difficult for us to fix "struct FILE". >>> >>> We are still paying for this years later. >>> >>> Any way we can make this a supported interface? >>> >>> -Alfred >> Re-reading the original question, I've got to ask why pthread_self() >> isn't the right answer? The requirement wasn't "I need to know what the >> OS calls me" it was "I need a unique ID per thread within a process." > The identity check is performed hundreds of times per second. The > overhead of (Py_MainThreadId == __readgsdword(0x48) ? A() : B()) is > negligible -- I can't say the same for a system/function call. > > (I'm experimenting with an idea I had to parallelize Python such > that it can exploit all cores without impeding the performance > of normal single-threaded execution (like previous-GIL-removal > attempts and STM). It's very promising so far -- presuming we > can get the current thread ID in a couple of instructions. If > not, single-threaded performance suffers too much.) TLS? > > Trent. > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" >