sem_init(3C) sem_init(3C) NAME sem_init - initialize a posix unnamed semaphore SYNOPSIS #include <semaphore.h> int sem_init(sem_t *sem, int pshared, unsigned int value); DESCRIPTION sem_init initializes the unnamed semaphore located at address sem. The address sem may reside anywhere in the calling processes address space, but if the semaphore is intended to be shared across process boundaries, sem must reside in shared memory. The pshared argument is used to specify whether the semaphore is intended to be shared across process boundaries or only used locally by threads of execution within a common process. If pshared is set to zero, then the semaphore is not intended for sharing across process boundaries. Conversely, a non-zero pshared value indicates any process having read and write access to address sem, may perform semaphore operations on sem. Unnamed semaphores have been optimized for local thread usage, delivering increased performance within posix thread applications [see pthread_create(3P)]. The initial value of the semaphore is specified by value, which may be any non-negative number less than {SEM_VALUE_MAX} [see sysconf(3C)]. POSIX semaphores are compatible across all MIPS ABIs: o32, n32 and 64. Once a semaphore is initialized, processes may execute the following semaphore operations: sem_post, sem_wait, sem_trywait, sem_getvalue, sem_destroy. sem_init will fail if one or more of the following are true: [EINVAL] The value parameter was set to a number greater than {SEM_VALUE_MAX}. [ENOSPC] The resources required to initialize the semaphore have been depleted. [EPERM] The calling process lacks the permissions required to initialize the semaphore. SEE ALSO sem_destroy(3C), sem_getvalue(3C), sem_post(3C), sem_wait(3C), sem_trywait(3C), sem_open(3C), sem_close(3C), sem_unlink(3C), shm_open(3C), sysconf(3C), mmap(3C) DIAGNOSTICS Upon successful completion, a value of 0 is returned to the calling process. Otherwise, a value of -1 is returned and errno is set to indicate the error. Page 2