File semphr.h
FileList > FreeRTOS > include > semphr.h
Go to the source code of this file.
#include "queue.h"
Public Types
Type | Name |
---|---|
typedef QueueHandle_t | SemaphoreHandle_t |
Macros
Type | Name |
---|---|
define | semBINARY_SEMAPHORE_QUEUE_LENGTH ( ( uint8_t ) 1U ) |
define | semGIVE_BLOCK_TIME ( ( TickType_t ) 0U ) |
define | semSEMAPHORE_QUEUE_ITEM_LENGTH ( ( uint8_t ) 0U ) |
define | uxSemaphoreGetCount (xSemaphore) uxQueueMessagesWaiting( ( QueueHandle_t ) ( xSemaphore ) ) |
define | vSemaphoreDelete (xSemaphore) vQueueDelete( ( QueueHandle_t ) ( xSemaphore ) ) |
define | xSemaphoreGetMutexHolder (xSemaphore) xQueueGetMutexHolder( ( xSemaphore ) ) |
define | xSemaphoreGetMutexHolderFromISR (xSemaphore) xQueueGetMutexHolderFromISR( ( xSemaphore ) ) |
define | xSemaphoreGive (xSemaphore) xQueueGenericSend( ( QueueHandle_t ) ( xSemaphore ), NULL, semGIVE_BLOCK_TIME, queueSEND_TO_BACK ) |
define | xSemaphoreGiveFromISR (xSemaphore, pxHigherPriorityTaskWoken) xQueueGiveFromISR( ( QueueHandle_t ) ( xSemaphore ), ( pxHigherPriorityTaskWoken ) ) |
define | xSemaphoreTake (xSemaphore, xBlockTime) xQueueSemaphoreTake( ( xSemaphore ), ( xBlockTime ) ) |
define | xSemaphoreTakeFromISR (xSemaphore, pxHigherPriorityTaskWoken) xQueueReceiveFromISR( ( QueueHandle_t ) ( xSemaphore ), NULL, ( pxHigherPriorityTaskWoken ) ) |
Public Types Documentation
typedef SemaphoreHandle_t
typedef QueueHandle_t SemaphoreHandle_t;
Macro Definition Documentation
define semBINARY_SEMAPHORE_QUEUE_LENGTH
#define semBINARY_SEMAPHORE_QUEUE_LENGTH ( ( uint8_t ) 1U )
define semGIVE_BLOCK_TIME
#define semGIVE_BLOCK_TIME ( ( TickType_t ) 0U )
define semSEMAPHORE_QUEUE_ITEM_LENGTH
#define semSEMAPHORE_QUEUE_ITEM_LENGTH ( ( uint8_t ) 0U )
define uxSemaphoreGetCount
#define uxSemaphoreGetCount (
xSemaphore
) uxQueueMessagesWaiting( ( QueueHandle_t ) ( xSemaphore ) )
semphr.h
If the semaphore is a counting semaphore then uxSemaphoreGetCount() returns its current count value. If the semaphore is a binary semaphore then uxSemaphoreGetCount() returns 1 if the semaphore is available, and 0 if the semaphore is not available.
define vSemaphoreDelete
#define vSemaphoreDelete (
xSemaphore
) vQueueDelete( ( QueueHandle_t ) ( xSemaphore ) )
define xSemaphoreGetMutexHolder
#define xSemaphoreGetMutexHolder (
xSemaphore
) xQueueGetMutexHolder( ( xSemaphore ) )
semphr.h
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.
define xSemaphoreGetMutexHolderFromISR
#define xSemaphoreGetMutexHolderFromISR (
xSemaphore
) xQueueGetMutexHolderFromISR( ( xSemaphore ) )
semphr.h
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.
define xSemaphoreGive
#define xSemaphoreGive (
xSemaphore
) xQueueGenericSend( ( QueueHandle_t ) ( xSemaphore ), NULL, semGIVE_BLOCK_TIME, queueSEND_TO_BACK )
define xSemaphoreGiveFromISR
#define xSemaphoreGiveFromISR (
xSemaphore,
pxHigherPriorityTaskWoken
) xQueueGiveFromISR( ( QueueHandle_t ) ( xSemaphore ), ( pxHigherPriorityTaskWoken ) )
define xSemaphoreTake
#define xSemaphoreTake (
xSemaphore,
xBlockTime
) xQueueSemaphoreTake( ( xSemaphore ), ( xBlockTime ) )
define xSemaphoreTakeFromISR
#define xSemaphoreTakeFromISR (
xSemaphore,
pxHigherPriorityTaskWoken
) xQueueReceiveFromISR( ( QueueHandle_t ) ( xSemaphore ), NULL, ( pxHigherPriorityTaskWoken ) )
semphr. h
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
The documentation for this class was generated from the following file fw/rbcx-coprocessor/lib/FreeRTOS/include/semphr.h