Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

mmap(2)

msem_lock(3)

msem_remove(3)

msem_unlock(3)

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>

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026