 |
Index for Section 3 |
|
 |
Alphabetical listing for S |
|
 |
Bottom of page |
|
sem_init(3)
NAME
sem_init - Initializes an unnamed semaphore (P1003.1b)
LIBRARY
Realtime Library (librt.so, librt.a)
SYNOPSIS
#include <semaphore.h>
int sem_init (
sem_t *sem,
int pshared,
unsigned int value);
PARAMETERS
sem Specifies a location to receive the descriptor of the
initialized semaphore.
pshared Specifies a value indicating whether the semaphore should be
sharable between processes (non-zero value) or not (zero).
value Specifies the initial value to be given to the semaphore.
DESCRIPTION
The sem_init function creates a new counting semaphore with a specific
value. A semaphore is used to limit access to a critical resource. When a
process requires access to the resource without interference from other
processes, it attempts to establish a connection with the associated
semaphore. If the semaphore value is greater than zero, the connection is
established and the semaphore value is decremented by one. If the
semaphore value is less than or equal to zero, the process attempting to
access the resource is blocked and must wait for another process to release
the semaphore and increment the semaphore value.
The sem_init function establishes a connection between an unnamed semaphore
and a process; the sem_wait and sem_trywait functions lock the semaphore;
and the sem_post function unlocks the semaphore. Use the sem_destroy
function to deallocate system resources allocated to the process for use
with the semaphore. You can use the sem_getvalue function to obtain the
value of a semaphore.
A semaphore created by a call to the sem_init function remains valid until
the semaphore is removed by a call to the sem_destroy function.
RETURN VALUES
On successful completion, the function returns the value 0 (zero);
otherwise, the function returns the value -1 and sets errno to indicate the
error.
ERRORS
The sem_init function fails under the following conditions:
[EINVAL] The value argument exceeds {SEM_VALUE_MAX}.
[ENOSPC] A resource required to initialize the semaphore has
been exhausted. The limit on semaphores
({SEM_NSEMS_MAX}) has been reached.
[EPERM] The process lacks the appropriate privilege to
initialize the semaphore.
RELATED INFORMATION
Functions: sem_destroy(3), sem_post(3), sem_trywait(3),sem_wait(3)
Guide to Realtime Programming
 |
Index for Section 3 |
|
 |
Alphabetical listing for S |
|
 |
Top of page |
|