SEM_INIT(3C) Standard C Library Functions SEM_INIT(3C)


NAME


sem_init - initialize an unnamed semaphore

SYNOPSIS


#include <semaphore.h>

int sem_init(sem_t *sem, int pshared, unsigned int value);


DESCRIPTION


The sem_init() function is used to initialize the unnamed semaphore
referred to by sem. The value of the initialized semaphore is value.
Following a successful call to sem_init(), the semaphore may be used in
subsequent calls to sem_wait(3C), sem_trywait(3C), sem_post(3C), and
sem_destroy(3C). This semaphore remains usable until the semaphore is
destroyed.


If the pshared argument has a non-zero value, then the semaphore is
shared between processes; in this case, any process that can access the
semaphore sem can use sem for performing sem_wait(3C), sem_trywait(3C),
sem_post(3C), and sem_destroy(3C) operations.


Only sem itself may be used for performing synchronization. The result of
referring to copies of sem in calls to sem_wait(3C), sem_trywait(3C),
sem_post(3C), and sem_destroy(3C), is undefined.


If the pshared argument is zero, then the semaphore is shared between
threads of the process; any thread in this process can use sem for
performing sem_wait(3C), sem_trywait(3C), sem_post(3C), and
sem_destroy(3C) operations. The use of the semaphore by threads other
than those created in the same process is undefined.


Attempting to initialize an already initialized semaphore results in
undefined behavior.


The sem_open(3C) function is used with named semaphores.

RETURN VALUES


Upon successful completion, the function initializes the semaphore in
sem. Otherwise, it returns -1 and sets errno to indicate the error.

ERRORS


The sem_init() function will fail if:

EINVAL
The value argument exceeds SEM_VALUE_MAX.


ENOSPC
A resource required to initialize the semaphore has been
exhausted, or the resources have reached the limit on
semaphores (SEM_NSEMS_MAX).


ENOSYS
The sem_init() function is not supported by the system.


EPERM
The process lacks the appropriate privileges to initialize the
semaphore.


ATTRIBUTES


See attributes(7) for descriptions of the following attributes:


+--------------------+-------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-------------------+
|Interface Stability | Committed |
+--------------------+-------------------+
|MT-Level | MT-Safe |
+--------------------+-------------------+
|Standard | See standards(7). |
+--------------------+-------------------+

SEE ALSO


sem_destroy(3C), sem_open(3C), sem_post(3C), sem_wait(3C), attributes(7),
standards(7)


illumos July 9, 2009 SEM_INIT(3C)