 |
Index for Section 3 |
|
 |
Alphabetical listing for S |
|
 |
Bottom of page |
|
sem_init(3)
NAME
sem_init - Initializes an unnamed semaphore (P1003.1b)
SYNOPSIS
#include <semaphore.h>
int sem_init(
sem_t *sem,
int pshared,
unsigned int value );
LIBRARY
Realtime Library (librt)
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 the creating process and its descendants (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.
SEE ALSO
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 |
|