MSEM_INIT(3) SysV MSEM_INIT(3)
NAME
msem_init - Initialize a semaphore in a mapped file or shared memory
region
SYNOPSIS
#include <sys/mman.h>
msemaphore *msem_init (sem, initial_value)
msemaphore *sem;
int initial_value;
DESCRIPTION
The msem_init function allocates a new binary semaphore and initializes
the state of the new semaphore. The sem argument points to an msemaphore
structure in which the state of the semaphore is stored.
If the initial_value argument is MSEM_LOCKED, the new semaphore is
initialized in the locked state. If the initial_value argument is
MSEM_UNLOCKED, the new semaphore is initialized in the unlocked state.
The msemaphore structure is located within a mapped file or shared memory
region created by a successful call to the mmap(2) function and having
both read and write access.
If a semaphore is created in a mapped file region, any reference by a
process which has mapped the same file, using a (struct msemaphore *)
pointer which resolves to the same file offset, is taken as a reference
to the same semaphore. If a semaphore is created in an anonymous shared
memory region, any reference by a process which shares the same region,
using a (struct msemaphore *) pointer which resolves to the same offset
from the start of the region, is taken as a reference to the same
semaphore.
Any previous semaphore state stored in the msemaphore structure is
ignored and overwritten.
DIAGNOSTICS
Upon successful completion, the msem_init function returns a pointer to
the initialized msemaphore structure. On error, the msem_init function
returns null and sets errno to indicate the error.
ERRORS
msem_init fails if:
[EINVAL] The initial_value argument is not valid.
[ENOMEM] A new semaphore could not be created.
SEE ALSO
mmap(2), msem_lock(3), msem_remove(3), msem_unlock(3), <sys/mman.h>