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