Appearance
Mutex
Mutex functions.
A Mutex is a program object that allows multiple program threads to share the same resource, but not simultaneously. When a program is using a particular resource, that program locks the mutex from other programs' access, doing this signifies that the mutex is currently being used. When it's done, it will unlock the mutex and other programs that were barred can now access the resource.
Coldwave eOS provides several functions for Mutex management, such as osMutexNew (to create and initialize a Mutex object), osMutexAcquire (to acquire a Mutex and lock it), osMutexRelease (to release and unlock a Mutex), and osMutexDelete (to delete a Mutex object).
Example usage
cpp
osMutexId_t mid_Mutex;
void sampleMutexUsage (void) {
mid_Mutex = osMutexNew(NULL); // create and initialize Mutex object
if (osMutexAcquire(mid_Mutex, osWaitForever) == osOK) { // acquire a mutex, wait forever
// critical section
osMutexRelease(mid_Mutex); // release the mutex
}
osMutexDelete(mid_Mutex); // delete the mutex object
}
Types
Name | |
---|---|
struct | osMutexAttr_t Attributes structure for mutex. |
Functions Overview
Name | |
---|---|
osMutexId_t | osMutexNew(const osMutexAttr_t * attr) Create and Initialize a Mutex object. |
const char * | osMutexGetName(osMutexId_t mutex_id) Get name of a Mutex object. |
osStatus_t | osMutexAcquire(osMutexId_t mutex_id, uint32_t timeout) Acquire a Mutex or timeout if it is locked. |
osStatus_t | osMutexRelease(osMutexId_t mutex_id) Release a Mutex that was acquired by osMutexAcquire. |
osThreadId_t | osMutexGetOwner(osMutexId_t mutex_id) Get Thread which owns a Mutex object. |
osStatus_t | osMutexDelete(osMutexId_t mutex_id) Delete a Mutex object. |
Defines
Name | |
---|---|
osMutexRecursive | Recursive mutex. |
osMutexPrioInherit | Priority inherit protocol. |
osMutexRobust | Robust mutex. |
Function Details
function osMutexNew
cpp
osMutexId_t osMutexNew(
const osMutexAttr_t * attr
)
Create and Initialize a Mutex object.
Parameters:
- attr mutex attributes; NULL: default values.
Return: mutex ID for reference by other functions or NULL in case of error.
function osMutexGetName
cpp
const char * osMutexGetName(
osMutexId_t mutex_id
)
Get name of a Mutex object.
Parameters:
- mutex_id mutex ID obtained by osMutexNew.
Return: name as null-terminated string.
function osMutexAcquire
cpp
osStatus_t osMutexAcquire(
osMutexId_t mutex_id,
uint32_t timeout
)
Acquire a Mutex or timeout if it is locked.
Parameters:
- mutex_id mutex ID obtained by osMutexNew.
- timeout CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.
Return: status code that indicates the execution status of the function.
function osMutexRelease
cpp
osStatus_t osMutexRelease(
osMutexId_t mutex_id
)
Release a Mutex that was acquired by osMutexAcquire.
Parameters:
- mutex_id mutex ID obtained by osMutexNew.
Return: status code that indicates the execution status of the function.
function osMutexGetOwner
cpp
osThreadId_t osMutexGetOwner(
osMutexId_t mutex_id
)
Get Thread which owns a Mutex object.
Parameters:
- mutex_id mutex ID obtained by osMutexNew.
Return: thread ID of owner thread or NULL when mutex was not acquired.
function osMutexDelete
cpp
osStatus_t osMutexDelete(
osMutexId_t mutex_id
)
Delete a Mutex object.
Parameters:
- mutex_id mutex ID obtained by osMutexNew.
Return: status code that indicates the execution status of the function.
Macros Documentation
define osMutexRecursive
cpp
#define osMutexRecursive 0x00000001U
Recursive mutex.
define osMutexPrioInherit
cpp
#define osMutexPrioInherit 0x00000002U
Priority inherit protocol.
define osMutexRobust
cpp
#define osMutexRobust 0x00000008U
Robust mutex.