Typedefs | Functions

sem.h File Reference

Semaphore implementation for the synchronization of POSIX threads. More...

Go to the source code of this file.

Typedefs

typedef struct SEM SEM

Functions

SEMsemCreate (int initVal)
 Creates a new semaphore.
int semDestroy (SEM *sem)
 Destroys a semaphore and frees all associated resources.
void P (SEM *sem)
 P-operation.
void V (SEM *sem)
 V-operation.

Detailed Description

Semaphore implementation for the synchronization of POSIX threads.

This module implements counting P/V semaphores suitable for the synchronization of POSIX threads. POSIX mutexes and condition variables are utilized to implement the semaphor operations.


Typedef Documentation

typedef struct SEM SEM

Opaque type of a semaphore.


Function Documentation

void P ( SEM sem  ) 

P-operation.

Attempts to decrement the semaphore value by 1. If the semaphore value is 0, the operation blocks until a V-operation increments the value and the P-operation succeeds.

Parameters:
sem Handle of the semaphore to decrement.
SEM* semCreate ( int  initVal  ) 

Creates a new semaphore.

This function creates a new semaphore. If an error occurs during the initialization, the implementation frees all resources already allocated by then and sets errno to an appropriate value.

Parameters:
initVal The initial value of the semaphore.
Returns:
Handle for the created semaphore, or NULL if an error occurred.
int semDestroy ( SEM sem  ) 

Destroys a semaphore and frees all associated resources.

If an error occurs, errno is set to an appropriate value.

Parameters:
sem Handle of the semaphore to destroy. If a NULL pointer is passed, the implementation does nothing, but returns 0.
Returns:
0 on success, negative value on error. In case of an error, not all resources may have been freed, but nevertheless the semaphore handle must not be used any more.
void V ( SEM sem  ) 

V-operation.

Increments the semaphore value by 1 and notifies P-operations that are blocked on the semaphore of the change.

Parameters:
sem Handle of the semaphore to increment.
 All Files Functions Typedefs