Collaboration diagram for Semaphore:
![]() |
In addition to posting and waiting for events, Threads can use the provided semaphore funxtions to handle a pool of shared resources.
Data Structures | |
struct | _SEM |
Semaphore. More... | |
struct | _SEM |
Semaphore. More... | |
Typedefs | |
typedef _SEM | SEM |
Sempahore type. | |
Functions | |
void | NutSemInit (SEM *sem, short value) |
Initialize an unnamed semaphore to value. | |
void | NutSemWait (SEM *sem) |
Lock a semaphore. | |
int | NutSemTryWait (SEM *sem) |
Attempt to lock a semaphore without blocking. | |
void | NutSemPost (SEM *sem) |
Unlock a sempahore. | |
int | NutSemDestroy (SEM *sem) |
Free resources allocated for a semaphore. |
void NutSemInit | ( | SEM * | sem, | |
short | value | |||
) |
Initialize an unnamed semaphore to value.
Definition at line 76 of file semaphore.c.
References _SEM::qhp, and _SEM::value.
Referenced by CANBufferInit().
void NutSemWait | ( | SEM * | sem | ) |
Lock a semaphore.
If the semaphore value is currently zero, then the calling thread will not return from the call to sem_wait() the semaphore becomes available
Definition at line 87 of file semaphore.c.
Referenced by CANBufferGetMutex(), CANBufferPutMutex(), and NutSemTryWait().
int NutSemTryWait | ( | SEM * | sem | ) |
Attempt to lock a semaphore without blocking.
Return zero, if successful, otherwise the sempahore is already locked
Definition at line 115 of file semaphore.c.
References NutSemWait(), and _SEM::value.
void NutSemPost | ( | SEM * | sem | ) |
Unlock a sempahore.
Definition at line 100 of file semaphore.c.
References NutEventPost(), _SEM::qhp, and _SEM::value.
Referenced by CANBufferGetMutex(), and CANBufferPutMutex().
int NutSemDestroy | ( | SEM * | sem | ) |
Free resources allocated for a semaphore.
Return zero, if successful, otherwise there are threads blocked on the sempahore
Definition at line 130 of file semaphore.c.