Skip site navigation (1)Skip section navigation (2)
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>