process shared semaphores?
deischen at freebsd.org
Wed Dec 2 21:19:32 UTC 2009
On Wed, 2 Dec 2009, Andrew Gallatin wrote:
> The man page for sem_init(3) says:
> A non-zero value for pshared specifies a
> shared semaphore that can be used by multiple processes, which this
> implementation is not capable of.
> Is this still correct? I'm asking, both because it seems strange to
> not return an error if the implementation does not support pshared
> semaphores, and because the threads library seems to expect
> it to work. Eg:
> _sem_init(sem_t *sem, int pshared, unsigned int value)
> semid_t semid;
> semid = (semid_t)SEM_USER;
> if ((pshared != 0) && (ksem_init(&semid, value) != 0))
> return (-1);
> So is the man page out of date, or is the userspace code future-proof
> for when the kernel catches up?
The code should probably return -1 and ENOTSUP.
Why don't you use named semaphores if you want
process shared (sem_open)? Shouldn't those work?
More information about the freebsd-current