From owner-freebsd-threads@FreeBSD.ORG Tue Jan 5 14:37:04 2010 Return-Path: Delivered-To: threads@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D5D6E1065696; Tue, 5 Jan 2010 14:37:04 +0000 (UTC) (envelope-from deischen@freebsd.org) Received: from mail.netplex.net (mail.netplex.net [204.213.176.10]) by mx1.freebsd.org (Postfix) with ESMTP id 970808FC2C; Tue, 5 Jan 2010 14:37:04 +0000 (UTC) Received: from sea.ntplx.net (sea.ntplx.net [204.213.176.11]) by mail.netplex.net (8.14.3/8.14.3/NETPLEX) with ESMTP id o05Eb21c011123; Tue, 5 Jan 2010 09:37:03 -0500 (EST) X-Virus-Scanned: by AMaViS and Clam AntiVirus (mail.netplex.net) X-Greylist: Message whitelisted by DRAC access database, not delayed by milter-greylist-4.2.2 (mail.netplex.net [204.213.176.10]); Tue, 05 Jan 2010 09:37:03 -0500 (EST) Date: Tue, 5 Jan 2010 09:37:02 -0500 (EST) From: Daniel Eischen X-X-Sender: eischen@sea.ntplx.net To: David Xu In-Reply-To: <4B42E0B2.4010507@freebsd.org> Message-ID: References: <4B42E0B2.4010507@freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: threads@freebsd.org Subject: Re: Underline version of semaphore functions X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Daniel Eischen List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Jan 2010 14:37:04 -0000 On Tue, 5 Jan 2010, David Xu wrote: > I saw underline version of semaphore functions in > libc/include/namespace.h: > > #define sem_close _sem_close > #define sem_destroy _sem_destroy > #define sem_getvalue _sem_getvalue > #define sem_init _sem_init > #define sem_open _sem_open > #define sem_post _sem_post > #define sem_timedwait _sem_timedwait > #define sem_trywait _sem_trywait > #define sem_unlink _sem_unlink > #define sem_wait _sem_wait > > > but libc never has them: Yes, because libpthread has them and the thread library was needed in order to provide semaphores. These single underscore functions are for libc internal usage so that libthr (libpthread) may know the difference between semaphores created/used by libc and those created/used by an application. The provider of semaphores (and mutexes, condvars, etc) may need to know who created and uses these objects (libc or application), so for example on a fork() or perhaps thread_safe_fork() all those objects created by libc can be automatically reinitialized. Or perhaps so that we know whether to delay thread cancellation until a thread releases these internal locks. -- DE