first patch for process-shared semaphore

John Baldwin jhb at freebsd.org
Wed Dec 23 14:38:38 UTC 2009


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


More information about the freebsd-threads mailing list