Date: Tue, 5 Jan 2010 09:37:02 -0500 (EST) From: Daniel Eischen <deischen@freebsd.org> To: David Xu <davidxu@freebsd.org> Cc: threads@freebsd.org Subject: Re: Underline version of semaphore functions Message-ID: <Pine.GSO.4.64.1001050929550.5637@sea.ntplx.net> In-Reply-To: <4B42E0B2.4010507@freebsd.org> References: <4B42E0B2.4010507@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.64.1001050929550.5637>