Mutex
RTOS mutex functions. More...
Functions |
|
gos_result_t | gos_rtos_mutex_init (gos_mutex_t *mutex) |
Initializes a mutex.
More...
|
|
gos_result_t | gos_rtos_mutex_deinit (gos_mutex_t *mutex) |
De-initialise a mutex.
More...
|
|
gos_result_t | gos_rtos_mutex_lock (gos_mutex_t *mutex) |
Obtains the lock on a mutex.
More...
|
|
gos_result_t | gos_rtos_mutex_trylock (gos_mutex_t *mutex, uint32_t timeout_ms) |
Obtains the lock on a mutex with timeout.
More...
|
|
gos_result_t | gos_rtos_mutex_unlock (gos_mutex_t *mutex) |
Releases the lock on a mutex.
More...
|
|
gos_result_t | gos_rtos_mutex_current_thread_owns (const gos_mutex_t *mutex) |
Determine if current thread owns the mutex.
More...
|
|
Detailed Description
RTOS mutex functions.
Function Documentation
◆ gos_rtos_mutex_current_thread_owns()
gos_result_t gos_rtos_mutex_current_thread_owns | ( | const gos_mutex_t * |
mutex
|
) |
Determine if current thread owns the mutex.
This returns GOS_SUCCESS if the current thread has previously locked this mutex. It returns GOS_ERROR if the currrent thread has NOT previously locked this mutex.
- Note
- The provided mutex should have been previously initialized with gos_rtos_mutex_init() .
- Parameters
-
[in] mutex
: Pointer to the mutex handle to check lock status
- Returns
- Result of API call, gos_result_t
◆ gos_rtos_mutex_deinit()
gos_result_t gos_rtos_mutex_deinit | ( | gos_mutex_t * |
mutex
|
) |
De-initialise a mutex.
Deletes a mutex created with gos_rtos_mutex_init()
- Parameters
-
[in] mutex
: Pointer to the mutex handle
- Returns
- Result of API call, gos_result_t
◆ gos_rtos_mutex_init()
gos_result_t gos_rtos_mutex_init | ( | gos_mutex_t * |
mutex
|
) |
Initializes a mutex.
Initializes a recursive mutex. A mutex is different to a semaphore in that a thread that already holds the lock on the mutex can request the lock again (nested) without causing it to be suspended. Additionally, the thread that locks the mutex MUST also unlock the mutex at some point later.
Once the mutex is no longer needed, use gos_rtos_mutex_deinit() to clean up the mutex object.
- Parameters
-
[in] mutex
: Pointer to the mutex handle to be initialised
- Returns
- Result of API call, gos_result_t
◆ gos_rtos_mutex_lock()
gos_result_t gos_rtos_mutex_lock | ( | gos_mutex_t * |
mutex
|
) |
Obtains the lock on a mutex.
Attempts to obtain the lock on a mutex. If the lock is already held by another thread, the calling thread will be suspended until the mutex lock is released by the other thread.
- Note
- This API will block until the mutex is acquired. See gos_rtos_mutex_trylock() to only block for up to a maximum time.
- The provided mutex should have been previously initialized with gos_rtos_mutex_init() .
- Parameters
-
[in] mutex
: Pointer to the mutex handle to be locked
- Returns
- Result of API call, gos_result_t
◆ gos_rtos_mutex_trylock()
gos_result_t gos_rtos_mutex_trylock | ( | gos_mutex_t * |
mutex,
|
uint32_t |
timeout_ms
|
||
) |
Obtains the lock on a mutex with timeout.
This has the same functionality as
gos_rtos_mutex_lock()
except if it cannot obtain the lock after the specified
timeout_ms
then the API fails with GOS_TIMEOUT.
- Note
- The provided mutex should have been previously initialized with gos_rtos_mutex_init() .
- Parameters
-
[in] mutex
: Pointer to the mutex handle to be locked [in] timeout_ms
: Time in milliseconds to wait to acquire the mutex, return GOS_TIMEOUT if the timeout expires
- Returns
- Result of API call, gos_result_t
◆ gos_rtos_mutex_unlock()
gos_result_t gos_rtos_mutex_unlock | ( | gos_mutex_t * |
mutex
|
) |
Releases the lock on a mutex.
Releases a currently held lock on a mutex. If another thread is waiting on the mutex lock, then it will be resumed.
- Note
- The provided mutex should have been previously initialized with gos_rtos_mutex_init() .
- Parameters
-
[in] mutex
: Pointer to the mutex handle to be unlocked
- Returns
- Result of API call, gos_result_t