Thread synchronization support. More...
Data Structures | |
struct | _MUTEX |
Recursive mutex. More... | |
Typedefs | |
typedef struct _MUTEX | MUTEX |
Recursive mutex type. | |
Functions | |
void | NutMutexInit (MUTEX *mutex) |
Create a mutex. | |
void | NutMutexLock (MUTEX *mutex) |
Lock a mutex. | |
int | NutMutexUnlock (MUTEX *mutex) |
Unlock a mutex. | |
int | NutMutexTrylock (MUTEX *mutex) |
Attempt to lock a mutex without blocking. | |
int | NutMutexDestroy (MUTEX *mutex) |
Free resources allocated for a mutex. |
Thread synchronization support.
In addition to posting and waiting for events, Threads can use the provided recursive mutex funxtions to assert mutual access to shared data structures.
A recursive mutex is a mutex that can be locked several times by the thread that already owns the mutex.
void NutMutexInit | ( | MUTEX * | mutex | ) |
Create a mutex.
The type for the mutex is recursive
References _MUTEX::count, NULL, NUTASSERT, _MUTEX::qhp, and _MUTEX::thread.
Referenced by NutConditionInit().
void NutMutexLock | ( | MUTEX * | mutex | ) |
Lock a mutex.
If the mutex is already locked by another thread, the thread will block until the mutex becomes available
References _MUTEX::count, NULL, NUT_WAIT_INFINITE, NUTASSERT, NutEventWaitNext(), _MUTEX::qhp, runningThread, and _MUTEX::thread.
Referenced by NutConditionLock(), NutConditionTimedWait(), NutConditionWait(), and NutMutexTrylock().
int NutMutexUnlock | ( | MUTEX * | mutex | ) |
Unlock a mutex.
Return zero, if successful, otherwise the current thread does not hold a lock on mutex.
References _MUTEX::count, NULL, NUTASSERT, NutEventPost(), _MUTEX::qhp, runningThread, and _MUTEX::thread.
Referenced by NutConditionTimedWait(), NutConditionUnlock(), and NutConditionWait().
int NutMutexTrylock | ( | MUTEX * | mutex | ) |
Attempt to lock a mutex without blocking.
Return zero, if successful, otherwise the mutex is already locked by another thread
References _MUTEX::count, NULL, NUTASSERT, NutMutexLock(), runningThread, and _MUTEX::thread.
int NutMutexDestroy | ( | MUTEX * | mutex | ) |
Free resources allocated for a mutex.
Return zero, if successful, otherwise the mutex is locked by another thread
References _MUTEX::count, NULL, NUTASSERT, runningThread, and _MUTEX::thread.
Referenced by NutConditionFree().