#include <config.h>
#include <time.h>
#include <atomic.h>
Include dependency graph for semaphore.h:
Go to the source code of this file.
Defines | |
#define | EAGAIN 0xffff |
the error code | |
Typedefs | |
typedef atomic_t | sem_t |
the semaphore data-type | |
Functions | |
int | sem_init (sem_t *sem, int pshared, unsigned int value) |
Initialize a semaphore. | |
int | sem_wait (sem_t *sem) |
Wait for semaphore (blocking). | |
int | sem_timedwait (sem_t *sem, const time_t abs_timeout) |
Wait for semaphore (blocking with timeout). | |
int | sem_trywait (sem_t *sem) |
Try a wait for semaphore (non-blocking). | |
int | sem_post (sem_t *sem) |
Post a semaphore. | |
int | sem_getvalue (sem_t *sem, int *sval) |
Get the semaphore value. | |
int | sem_destroy (sem_t *sem) |
We're done with the semaphore, destroy it. |
Definition in file semaphore.h.
|
the error code
Definition at line 48 of file semaphore.h. |
|
the semaphore data-type
Definition at line 46 of file semaphore.h. Referenced by sem_init(). |
|
We're done with the semaphore, destroy it. sem_destroy() destroys a semaphore object, freeing the resources it might hold.
Definition at line 147 of file semaphore.h. |
|
Get the semaphore value.
Definition at line 132 of file semaphore.h. |
|
Initialize a semaphore. sem_init() initializes the semaphore object pointed to by {sem} by setting its internal count to {value}
Definition at line 64 of file semaphore.h. References sem_t. |
|
Post a semaphore. sem_post() atomically increases the count of the semaphore pointed to by {sem}. This function never blocks and can safely be used in asynchronous signal handlers.
Definition at line 123 of file semaphore.h. References atomic_inc(). |
|
Wait for semaphore (blocking with timeout).
sem_timedwait() suspends the calleing task until either the semaphore pointed to by {sem} has non-zero count or the given absolute timeout passed. Note the timeout is an ABSOLUTE time not relative (yes the standard is that stupid); so if you want a relative waiting time, call the function with If the semaphore reached a non-zero count its value is then atomically decreased.
|
|
Try a wait for semaphore (non-blocking). sem_trywait() is a non-blocking variant of sem_wait(). If the semaphore pointed to by {sem} has non-zero count, the count is atomically decreased and sem_trywait immediately returns 0. If the semaphore count is zero, sem_trywait immediately returns with error EAGAIN.
|
|
Wait for semaphore (blocking). sem_wait() suspends the calling task until the semaphore pointed to by {sem} has non-zero count. It then atomically decreases the semaphore count.
|
brickOS is released under the
Mozilla Public License.
Original code copyright 1998-2002 by the authors. |