Go to the source code of this file.
|
| #define | semBINARY_SEMAPHORE_QUEUE_LENGTH ( ( uint8_t ) 1U ) |
| |
| #define | semSEMAPHORE_QUEUE_ITEM_LENGTH ( ( uint8_t ) 0U ) |
| |
| #define | semGIVE_BLOCK_TIME ( ( TickType_t ) 0U ) |
| |
| #define | xSemaphoreTake(xSemaphore, xBlockTime) xQueueSemaphoreTake( ( xSemaphore ), ( xBlockTime ) ) |
| |
| #define | xSemaphoreGive(xSemaphore) xQueueGenericSend( ( QueueHandle_t ) ( xSemaphore ), NULL, semGIVE_BLOCK_TIME, queueSEND_TO_BACK ) |
| |
| #define | xSemaphoreGiveFromISR(xSemaphore, pxHigherPriorityTaskWoken) xQueueGiveFromISR( ( QueueHandle_t ) ( xSemaphore ), ( pxHigherPriorityTaskWoken ) ) |
| |
| #define | xSemaphoreTakeFromISR(xSemaphore, pxHigherPriorityTaskWoken) xQueueReceiveFromISR( ( QueueHandle_t ) ( xSemaphore ), NULL, ( pxHigherPriorityTaskWoken ) ) |
| |
| #define | vSemaphoreDelete(xSemaphore) vQueueDelete( ( QueueHandle_t ) ( xSemaphore ) ) |
| |
| #define | xSemaphoreGetMutexHolder(xSemaphore) xQueueGetMutexHolder( ( xSemaphore ) ) |
| |
| #define | xSemaphoreGetMutexHolderFromISR(xSemaphore) xQueueGetMutexHolderFromISR( ( xSemaphore ) ) |
| |
| #define | uxSemaphoreGetCount(xSemaphore) uxQueueMessagesWaiting( ( QueueHandle_t ) ( xSemaphore ) ) |
| |
◆ semBINARY_SEMAPHORE_QUEUE_LENGTH
| #define semBINARY_SEMAPHORE_QUEUE_LENGTH ( ( uint8_t ) 1U ) |
◆ semGIVE_BLOCK_TIME
◆ semSEMAPHORE_QUEUE_ITEM_LENGTH
| #define semSEMAPHORE_QUEUE_ITEM_LENGTH ( ( uint8_t ) 0U ) |
◆ uxSemaphoreGetCount
◆ vSemaphoreDelete
◆ xSemaphoreGetMutexHolder
semphr.h
TaskHandle_t xSemaphoreGetMutexHolder( SemaphoreHandle_t xMutex );
If xMutex is indeed a mutex type semaphore, return the current mutex holder. If xMutex is not a mutex type semaphore, or the mutex is available (not held by a task), return NULL.
Note: This is a good way of determining if the calling task is the mutex holder, but not a good way of determining the identity of the mutex holder as the holder may change between the function exiting and the returned value being tested.
◆ xSemaphoreGetMutexHolderFromISR
◆ xSemaphoreGive
◆ xSemaphoreGiveFromISR
| #define xSemaphoreGiveFromISR |
( |
|
xSemaphore, |
|
|
|
pxHigherPriorityTaskWoken |
|
) |
| xQueueGiveFromISR( ( QueueHandle_t ) ( xSemaphore ), ( pxHigherPriorityTaskWoken ) ) |
◆ xSemaphoreTake
| #define xSemaphoreTake |
( |
|
xSemaphore, |
|
|
|
xBlockTime |
|
) |
| xQueueSemaphoreTake( ( xSemaphore ), ( xBlockTime ) ) |
◆ xSemaphoreTakeFromISR
| #define xSemaphoreTakeFromISR |
( |
|
xSemaphore, |
|
|
|
pxHigherPriorityTaskWoken |
|
) |
| xQueueReceiveFromISR( ( QueueHandle_t ) ( xSemaphore ), NULL, ( pxHigherPriorityTaskWoken ) ) |
semphr. h
xSemaphoreTakeFromISR(
SemaphoreHandle_t xSemaphore,
BaseType_t *pxHigherPriorityTaskWoken
)Macro to take a semaphore from an ISR. The semaphore must have previously been created with a call to xSemaphoreCreateBinary() or xSemaphoreCreateCounting().
Mutex type semaphores (those created using a call to xSemaphoreCreateMutex()) must not be used with this macro.
This macro can be used from an ISR, however taking a semaphore from an ISR is not a common operation. It is likely to only be useful when taking a counting semaphore when an interrupt is obtaining an object from a resource pool (when the semaphore count indicates the number of resources available).
- Parameters
-
| xSemaphore | A handle to the semaphore being taken. This is the handle returned when the semaphore was created. |
| pxHigherPriorityTaskWoken | xSemaphoreTakeFromISR() will set *pxHigherPriorityTaskWoken to pdTRUE if taking the semaphore caused a task to unblock, and the unblocked task has a priority higher than the currently running task. If xSemaphoreTakeFromISR() sets this value to pdTRUE then a context switch should be requested before the interrupt is exited. |
- Returns
- pdTRUE if the semaphore was successfully taken, otherwise pdFALSE
◆ SemaphoreHandle_t