Thread synchronization support. More...
Data Structures | |
| struct | _SEM |
| Semaphore. More... | |
Typedefs | |
| typedef struct _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. | |
Thread synchronization support.
In addition to posting and waiting for events, Threads can use the provided semaphore funxtions to handle a pool of shared resources.
| void NutSemInit | ( | SEM * | sem, |
| short | value | ||
| ) |
Initialize an unnamed semaphore to value.
References NULL, NUTASSERT, _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
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
References NULL, NUTASSERT, NutSemWait(), and _SEM::value.
| void NutSemPost | ( | SEM * | sem | ) |
Unlock a sempahore.
References NULL, NUTASSERT, NutEventPost(), _SEM::qhp, and _SEM::value.
Referenced by CANBufferGetMutex(), and CANBufferPutMutex().