Date: Wed, 23 Dec 2009 09:36:35 -0500 From: John Baldwin <jhb@freebsd.org> To: freebsd-threads@freebsd.org Cc: threads@freebsd.org, David Xu <davidxu@freebsd.org> Subject: Re: first patch for process-shared semaphore Message-ID: <200912230936.35998.jhb@freebsd.org> In-Reply-To: <4B317741.8080004@freebsd.org> References: <4B317741.8080004@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 22 December 2009 8:49:53 pm David Xu wrote: > This is my first attempt to make process-shared mutex work, this means > you can mmap(MAP_SHARED) a memory area, and put semaphore there, > or you can sem_open a named semaphore, and just use it between > processes, the named semaphore uses file system and mmap(), directory > /tmp/.semaphore is used as IPC directory, any named semaphore > locates in the directory. old semaphore implementation still exists > to make it binary compatible, it uses symbol version. > > http://people.freebsd.org/~davidxu/patch/shared_semaphore_1.patch I would suggest that you leave named semaphores as they currently exist and follow this approach instead: 1) Named semaphores use ksem_*() still. 2) sem_init/sem_destroy operate on UTMX-backed semaphores identical to the ones used in the current libthr code. The semid_t structure now becomes the full structure that libthr currently allocates with a flag to indicate if it is a "system" semaphore or otherwise. The pshared flag passed to sem_init() can be used to set the sharing properties of the UMTX. 3) All of sem_init/sem_destroy is just in libc. Just move the libthr implementation bits into libc. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200912230936.35998.jhb>