35#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE
41#if ( configUSE_CO_ROUTINES == 1 )
49#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
53#define queueUNLOCKED ( ( int8_t ) -1 )
54#define queueLOCKED_UNMODIFIED ( ( int8_t ) 0 )
55#define queueINT8_MAX ( ( int8_t ) 127 )
66#define uxQueueType pcHead
67#define queueQUEUE_IS_MUTEX NULL
83#define queueSEMAPHORE_QUEUE_ITEM_LENGTH ( ( UBaseType_t ) 0 )
84#define queueMUTEX_GIVE_BLOCK_TIME ( ( TickType_t ) 0U )
86#if ( configUSE_PREEMPTION == 0 )
90 #define queueYIELD_IF_USING_PREEMPTION()
92 #define queueYIELD_IF_USING_PREEMPTION() portYIELD_WITHIN_API()
121 #if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
122 uint8_t ucStaticallyAllocated;
125 #if ( configUSE_QUEUE_SETS == 1 )
129 #if ( configUSE_TRACE_FACILITY == 1 )
145#if ( configQUEUE_REGISTRY_SIZE > 0 )
150 typedef struct QUEUE_REGISTRY_ITEM
152 const char * pcQueueName;
154 } xQueueRegistryItem;
159 typedef xQueueRegistryItem QueueRegistryItem_t;
197 const void * pvItemToQueue,
206#if ( configUSE_QUEUE_SETS == 1 )
221 uint8_t * pucQueueStorage,
222 const uint8_t ucQueueType,
230#if ( configUSE_MUTEXES == 1 )
234#if ( configUSE_MUTEXES == 1 )
251#define prvLockQueue( pxQueue ) \
252 taskENTER_CRITICAL(); \
254 if( ( pxQueue )->cRxLock == queueUNLOCKED ) \
256 ( pxQueue )->cRxLock = queueLOCKED_UNMODIFIED; \
258 if( ( pxQueue )->cTxLock == queueUNLOCKED ) \
260 ( pxQueue )->cTxLock = queueLOCKED_UNMODIFIED; \
270#define prvIncrementQueueTxLock( pxQueue, cTxLock ) \
272 const UBaseType_t uxNumberOfTasks = uxTaskGetNumberOfTasks(); \
273 if( ( UBaseType_t ) ( cTxLock ) < uxNumberOfTasks ) \
275 configASSERT( ( cTxLock ) != queueINT8_MAX ); \
276 ( pxQueue )->cTxLock = ( int8_t ) ( ( cTxLock ) + ( int8_t ) 1 ); \
285#define prvIncrementQueueRxLock( pxQueue, cRxLock ) \
287 const UBaseType_t uxNumberOfTasks = uxTaskGetNumberOfTasks(); \
288 if( ( UBaseType_t ) ( cRxLock ) < uxNumberOfTasks ) \
290 configASSERT( ( cRxLock ) != queueINT8_MAX ); \
291 ( pxQueue )->cRxLock = ( int8_t ) ( ( cRxLock ) + ( int8_t ) 1 ); \
300 Queue_t *
const pxQueue = xQueue;
304 if( ( pxQueue !=
NULL ) &&
363#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
367 uint8_t * pucQueueStorage,
369 const uint8_t ucQueueType )
378 ( pxStaticQueue !=
NULL ) &&
382 ( !( ( pucQueueStorage !=
NULL ) && ( uxItemSize == 0 ) ) ) &&
383 ( !( ( pucQueueStorage ==
NULL ) && ( uxItemSize != 0 ) ) ) )
385 #if ( configASSERT_DEFINED == 1 )
401 pxNewQueue = (
Queue_t * ) pxStaticQueue;
403 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
408 pxNewQueue->ucStaticallyAllocated =
pdTRUE;
426#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
429 uint8_t ** ppucQueueStorage,
433 Queue_t *
const pxQueue = xQueue;
438 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
441 if( pxQueue->ucStaticallyAllocated == ( uint8_t )
pdTRUE )
443 if( ppucQueueStorage !=
NULL )
445 *ppucQueueStorage = ( uint8_t * ) pxQueue->
pcHead;
459 if( ppucQueueStorage !=
NULL )
461 *ppucQueueStorage = ( uint8_t * ) pxQueue->
pcHead;
475#if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
479 const uint8_t ucQueueType )
482 size_t xQueueSizeInBytes;
483 uint8_t * pucQueueStorage;
487 ( ( SIZE_MAX / uxQueueLength ) >= uxItemSize ) &&
489 ( ( SIZE_MAX -
sizeof(
Queue_t ) ) >= ( uxQueueLength * uxItemSize ) ) )
494 xQueueSizeInBytes = ( size_t ) ( uxQueueLength * uxItemSize );
507 if( pxNewQueue !=
NULL )
511 pucQueueStorage = ( uint8_t * ) pxNewQueue;
512 pucQueueStorage +=
sizeof(
Queue_t );
514 #if ( configSUPPORT_STATIC_ALLOCATION == 1 )
519 pxNewQueue->ucStaticallyAllocated =
pdFALSE;
545 uint8_t * pucQueueStorage,
546 const uint8_t ucQueueType,
551 ( void ) ucQueueType;
559 pxNewQueue->
pcHead = ( int8_t * ) pxNewQueue;
564 pxNewQueue->
pcHead = ( int8_t * ) pucQueueStorage;
569 pxNewQueue->
uxLength = uxQueueLength;
573 #if ( configUSE_TRACE_FACILITY == 1 )
575 pxNewQueue->ucQueueType = ucQueueType;
579 #if ( configUSE_QUEUE_SETS == 1 )
581 pxNewQueue->pxQueueSetContainer =
NULL;
589#if ( configUSE_MUTEXES == 1 )
591 static void prvInitialiseMutex(
Queue_t * pxNewQueue )
593 if( pxNewQueue !=
NULL )
619#if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
626 xNewQueue = xQueueGenericCreate( uxMutexLength, uxMutexSize, ucQueueType );
627 prvInitialiseMutex( (
Queue_t * ) xNewQueue );
635#if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )
645 ( void ) ucQueueType;
647 xNewQueue = xQueueGenericCreateStatic( uxMutexLength, uxMutexSize,
NULL, pxStaticQueue, ucQueueType );
648 prvInitialiseMutex( (
Queue_t * ) xNewQueue );
656#if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) )
689#if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) )
702 pxReturn = ( (
Queue_t * ) xSemaphore )->u.xSemaphore.xMutexHolder;
715#if ( configUSE_RECURSIVE_MUTEXES == 1 )
770#if ( configUSE_RECURSIVE_MUTEXES == 1 )
813#if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )
821 if( ( uxMaxCount != 0 ) &&
822 ( uxInitialCount <= uxMaxCount ) )
826 if( xHandle !=
NULL )
828 ( (
Queue_t * ) xHandle )->uxMessagesWaiting = uxInitialCount;
849#if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
856 if( ( uxMaxCount != 0 ) &&
857 ( uxInitialCount <= uxMaxCount ) )
861 if( xHandle !=
NULL )
863 ( (
Queue_t * ) xHandle )->uxMessagesWaiting = uxInitialCount;
885 const void *
const pvItemToQueue,
891 Queue_t *
const pxQueue = xQueue;
896 #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )
917 #if ( configUSE_QUEUE_SETS == 1 )
923 if( pxQueue->pxQueueSetContainer !=
NULL )
932 else if( prvNotifyQueueSetContainer( pxQueue ) !=
pdFALSE )
963 else if( xYieldRequired !=
pdFALSE )
998 else if( xYieldRequired !=
pdFALSE )
1029 else if( xEntryTimeSet ==
pdFALSE )
1097 const void *
const pvItemToQueue,
1098 BaseType_t *
const pxHigherPriorityTaskWoken,
1103 Queue_t *
const pxQueue = xQueue;
1123 portASSERT_IF_INTERRUPT_PRIORITY_INVALID();
1134 const int8_t cTxLock = pxQueue->
cTxLock;
1150 #if ( configUSE_QUEUE_SETS == 1 )
1152 if( pxQueue->pxQueueSetContainer !=
NULL )
1161 else if( prvNotifyQueueSetContainer( pxQueue ) !=
pdFALSE )
1166 if( pxHigherPriorityTaskWoken !=
NULL )
1168 *pxHigherPriorityTaskWoken =
pdTRUE;
1188 if( pxHigherPriorityTaskWoken !=
NULL )
1190 *pxHigherPriorityTaskWoken =
pdTRUE;
1216 if( pxHigherPriorityTaskWoken !=
NULL )
1218 *pxHigherPriorityTaskWoken =
pdTRUE;
1236 ( void ) uxPreviousMessagesWaiting;
1262 BaseType_t *
const pxHigherPriorityTaskWoken )
1266 Queue_t *
const pxQueue = xQueue;
1299 portASSERT_IF_INTERRUPT_PRIORITY_INVALID();
1308 if( uxMessagesWaiting < pxQueue->uxLength )
1310 const int8_t cTxLock = pxQueue->
cTxLock;
1326 #if ( configUSE_QUEUE_SETS == 1 )
1328 if( pxQueue->pxQueueSetContainer !=
NULL )
1330 if( prvNotifyQueueSetContainer( pxQueue ) !=
pdFALSE )
1335 if( pxHigherPriorityTaskWoken !=
NULL )
1337 *pxHigherPriorityTaskWoken =
pdTRUE;
1357 if( pxHigherPriorityTaskWoken !=
NULL )
1359 *pxHigherPriorityTaskWoken =
pdTRUE;
1385 if( pxHigherPriorityTaskWoken !=
NULL )
1387 *pxHigherPriorityTaskWoken =
pdTRUE;
1428 void *
const pvBuffer,
1433 Queue_t *
const pxQueue = xQueue;
1443 #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )
1499 else if( xEntryTimeSet ==
pdFALSE )
1575 Queue_t *
const pxQueue = xQueue;
1577 #if ( configUSE_MUTEXES == 1 )
1589 #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )
1616 #if ( configUSE_MUTEXES == 1 )
1662 else if( xEntryTimeSet ==
pdFALSE )
1695 #if ( configUSE_MUTEXES == 1 )
1744 #if ( configUSE_MUTEXES == 1 )
1749 if( xInheritanceOccurred !=
pdFALSE )
1760 uxHighestWaitingPriority = prvGetDisinheritPriorityAfterTimeout( pxQueue );
1781 void *
const pvBuffer,
1786 int8_t * pcOriginalReadPosition;
1787 Queue_t *
const pxQueue = xQueue;
1797 #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )
1859 else if( xEntryTimeSet ==
pdFALSE )
1932 void *
const pvBuffer,
1933 BaseType_t *
const pxHigherPriorityTaskWoken )
1937 Queue_t *
const pxQueue = xQueue;
1956 portASSERT_IF_INTERRUPT_PRIORITY_INVALID();
1965 const int8_t cRxLock = pxQueue->
cRxLock;
1984 if( pxHigherPriorityTaskWoken !=
NULL )
1986 *pxHigherPriorityTaskWoken =
pdTRUE;
2025 void *
const pvBuffer )
2029 int8_t * pcOriginalReadPosition;
2030 Queue_t *
const pxQueue = xQueue;
2050 portASSERT_IF_INTERRUPT_PRIORITY_INVALID();
2087 uxReturn = ( (
Queue_t * ) xQueue )->uxMessagesWaiting;
2098 Queue_t *
const pxQueue = xQueue;
2115 Queue_t *
const pxQueue = xQueue;
2126 Queue_t *
const pxQueue = xQueue;
2131 #if ( configQUEUE_REGISTRY_SIZE > 0 )
2137 #if ( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 0 ) )
2143 #elif ( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )
2147 if( pxQueue->ucStaticallyAllocated == ( uint8_t )
pdFALSE )
2166#if ( configUSE_TRACE_FACILITY == 1 )
2170 return ( (
Queue_t * ) xQueue )->uxQueueNumber;
2176#if ( configUSE_TRACE_FACILITY == 1 )
2181 ( (
Queue_t * ) xQueue )->uxQueueNumber = uxQueueNumber;
2187#if ( configUSE_TRACE_FACILITY == 1 )
2191 return ( (
Queue_t * ) xQueue )->ucQueueType;
2199 return ( (
Queue_t * ) xQueue )->uxItemSize;
2205 return ( (
Queue_t * ) xQueue )->uxLength;
2209#if ( configUSE_MUTEXES == 1 )
2211 static UBaseType_t prvGetDisinheritPriorityAfterTimeout(
const Queue_t *
const pxQueue )
2230 return uxHighestPriorityOfWaitingTasks;
2237 const void * pvItemToQueue,
2249 #if ( configUSE_MUTEXES == 1 )
2266 ( void ) memcpy( (
void * ) pxQueue->
pcWriteTo, pvItemToQueue, (
size_t ) pxQueue->
uxItemSize );
2300 --uxMessagesWaiting;
2320 void *
const pvBuffer )
2350 int8_t cTxLock = pxQueue->
cTxLock;
2357 #if ( configUSE_QUEUE_SETS == 1 )
2359 if( pxQueue->pxQueueSetContainer !=
NULL )
2361 if( prvNotifyQueueSetContainer( pxQueue ) !=
pdFALSE )
2431 int8_t cRxLock = pxQueue->
cRxLock;
2484 Queue_t *
const pxQueue = xQueue;
2525 Queue_t *
const pxQueue = xQueue;
2542#if ( configUSE_CO_ROUTINES == 1 )
2545 const void * pvItemToQueue,
2549 Queue_t *
const pxQueue = xQueue;
2621#if ( configUSE_CO_ROUTINES == 1 )
2628 Queue_t *
const pxQueue = xQueue;
2715#if ( configUSE_CO_ROUTINES == 1 )
2718 const void * pvItemToQueue,
2721 Queue_t *
const pxQueue = xQueue;
2731 if( xCoRoutinePreviouslyWoken ==
pdFALSE )
2759 return xCoRoutinePreviouslyWoken;
2765#if ( configUSE_CO_ROUTINES == 1 )
2772 Queue_t *
const pxQueue = xQueue;
2793 if( ( *pxCoRoutineWoken ) ==
pdFALSE )
2799 *pxCoRoutineWoken =
pdTRUE;
2829#if ( configQUEUE_REGISTRY_SIZE > 0 )
2832 const char * pcQueueName )
2835 QueueRegistryItem_t * pxEntryToWrite =
NULL;
2839 if( pcQueueName !=
NULL )
2846 if( xQueue == xQueueRegistry[ ux ].xHandle )
2848 pxEntryToWrite = &( xQueueRegistry[ ux ] );
2852 else if( ( pxEntryToWrite ==
NULL ) && ( xQueueRegistry[ ux ].pcQueueName ==
NULL ) )
2854 pxEntryToWrite = &( xQueueRegistry[ ux ] );
2863 if( pxEntryToWrite !=
NULL )
2866 pxEntryToWrite->pcQueueName = pcQueueName;
2867 pxEntryToWrite->xHandle = xQueue;
2876#if ( configQUEUE_REGISTRY_SIZE > 0 )
2881 const char * pcReturn =
NULL;
2890 if( xQueueRegistry[ ux ].xHandle == xQueue )
2892 pcReturn = xQueueRegistry[ ux ].pcQueueName;
2907#if ( configQUEUE_REGISTRY_SIZE > 0 )
2919 if( xQueueRegistry[ ux ].xHandle == xQueue )
2922 xQueueRegistry[ ux ].pcQueueName =
NULL;
2940#if ( configUSE_TIMERS == 1 )
2946 Queue_t *
const pxQueue = xQueue;
2980#if ( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
2994#if ( configUSE_QUEUE_SETS == 1 )
3003 if( ( (
Queue_t * ) xQueueOrSemaphore )->pxQueueSetContainer !=
NULL )
3008 else if( ( (
Queue_t * ) xQueueOrSemaphore )->uxMessagesWaiting != (
UBaseType_t ) 0 )
3016 ( (
Queue_t * ) xQueueOrSemaphore )->pxQueueSetContainer = xQueueSet;
3028#if ( configUSE_QUEUE_SETS == 1 )
3034 Queue_t *
const pxQueueOrSemaphore = (
Queue_t * ) xQueueOrSemaphore;
3036 if( pxQueueOrSemaphore->pxQueueSetContainer != xQueueSet )
3053 pxQueueOrSemaphore->pxQueueSetContainer =
NULL;
3065#if ( configUSE_QUEUE_SETS == 1 )
3079#if ( configUSE_QUEUE_SETS == 1 )
3092#if ( configUSE_QUEUE_SETS == 1 )
3096 Queue_t * pxQueueSetContainer = pxQueue->pxQueueSetContainer;
3109 const int8_t cTxLock = pxQueueSetContainer->
cTxLock;
#define configMAX_PRIORITIES
#define configQUEUE_REGISTRY_SIZE
#define traceTAKE_MUTEX_RECURSIVE(pxMutex)
#define traceQUEUE_RECEIVE_FAILED(pxQueue)
#define traceBLOCKING_ON_QUEUE_PEEK(pxQueue)
#define traceQUEUE_RECEIVE_FROM_ISR_FAILED(pxQueue)
struct xSTATIC_QUEUE StaticQueue_t
#define traceCREATE_MUTEX(pxNewQueue)
#define traceQUEUE_REGISTRY_ADD(xQueue, pcQueueName)
#define traceCREATE_COUNTING_SEMAPHORE()
#define traceQUEUE_SET_SEND
#define traceQUEUE_CREATE_FAILED(ucQueueType)
#define vQueueAddToRegistry(xQueue, pcName)
#define traceQUEUE_PEEK_FROM_ISR(pxQueue)
#define traceQUEUE_SEND_FROM_ISR(pxQueue)
#define traceQUEUE_SEND(pxQueue)
#define traceQUEUE_CREATE(pxNewQueue)
#define traceCREATE_COUNTING_SEMAPHORE_FAILED()
#define traceBLOCKING_ON_QUEUE_RECEIVE(pxQueue)
#define traceGIVE_MUTEX_RECURSIVE_FAILED(pxMutex)
#define traceQUEUE_SEND_FROM_ISR_FAILED(pxQueue)
#define traceQUEUE_PEEK_FROM_ISR_FAILED(pxQueue)
#define traceQUEUE_RECEIVE(pxQueue)
#define traceBLOCKING_ON_QUEUE_SEND(pxQueue)
#define traceCREATE_MUTEX_FAILED()
#define traceGIVE_MUTEX_RECURSIVE(pxMutex)
#define traceQUEUE_DELETE(pxQueue)
#define traceQUEUE_SEND_FAILED(pxQueue)
#define mtCOVERAGE_TEST_MARKER()
#define traceQUEUE_PEEK(pxQueue)
#define traceQUEUE_RECEIVE_FROM_ISR(pxQueue)
#define traceTAKE_MUTEX_RECURSIVE_FAILED(pxMutex)
#define pcQueueGetName(xQueue)
#define vQueueUnregisterQueue(xQueue)
#define portYIELD_WITHIN_API
#define traceQUEUE_PEEK_FAILED(pxQueue)
void vCoRoutineAddToDelayedList(TickType_t xTicksToDelay, List_t *pxEventList)
BaseType_t xCoRoutineRemoveFromEventList(const List_t *pxEventList)
#define listCURRENT_LIST_LENGTH(pxList)
#define listGET_ITEM_VALUE_OF_HEAD_ENTRY(pxList)
#define listLIST_IS_EMPTY(pxList)
void vListInitialise(List_t *const pxList) PRIVILEGED_FUNCTION
#define PRIVILEGED_FUNCTION
void vPortFree(void *pv) PRIVILEGED_FUNCTION
void * pvPortMalloc(size_t xSize) PRIVILEGED_FUNCTION
#define portSET_INTERRUPT_MASK_FROM_ISR()
unsigned long UBaseType_t
#define portDISABLE_INTERRUPTS()
#define portCLEAR_INTERRUPT_MASK_FROM_ISR(x)
#define portENABLE_INTERRUPTS()
#define queueQUEUE_IS_MUTEX
static void prvInitialiseNewQueue(const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, const uint8_t ucQueueType, Queue_t *pxNewQueue) PRIVILEGED_FUNCTION
BaseType_t xQueueGenericSendFromISR(QueueHandle_t xQueue, const void *const pvItemToQueue, BaseType_t *const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition)
#define queueMUTEX_GIVE_BLOCK_TIME
UBaseType_t uxQueueGetQueueLength(QueueHandle_t xQueue)
UBaseType_t uxQueueSpacesAvailable(const QueueHandle_t xQueue)
void vQueueDelete(QueueHandle_t xQueue)
struct QueueDefinition xQUEUE
UBaseType_t uxQueueMessagesWaiting(const QueueHandle_t xQueue)
BaseType_t xQueueGiveFromISR(QueueHandle_t xQueue, BaseType_t *const pxHigherPriorityTaskWoken)
#define prvIncrementQueueRxLock(pxQueue, cRxLock)
BaseType_t xQueueGenericReset(QueueHandle_t xQueue, BaseType_t xNewQueue)
#define queueLOCKED_UNMODIFIED
static BaseType_t prvIsQueueFull(const Queue_t *pxQueue) PRIVILEGED_FUNCTION
static void prvUnlockQueue(Queue_t *const pxQueue) PRIVILEGED_FUNCTION
BaseType_t xQueueIsQueueFullFromISR(const QueueHandle_t xQueue)
static BaseType_t prvCopyDataToQueue(Queue_t *const pxQueue, const void *pvItemToQueue, const BaseType_t xPosition) PRIVILEGED_FUNCTION
BaseType_t xQueueIsQueueEmptyFromISR(const QueueHandle_t xQueue)
struct SemaphoreData SemaphoreData_t
static BaseType_t prvIsQueueEmpty(const Queue_t *pxQueue) PRIVILEGED_FUNCTION
BaseType_t xQueuePeek(QueueHandle_t xQueue, void *const pvBuffer, TickType_t xTicksToWait)
BaseType_t xQueueReceiveFromISR(QueueHandle_t xQueue, void *const pvBuffer, BaseType_t *const pxHigherPriorityTaskWoken)
BaseType_t xQueueGenericSend(QueueHandle_t xQueue, const void *const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition)
UBaseType_t uxQueueGetQueueItemSize(QueueHandle_t xQueue)
BaseType_t xQueueReceive(QueueHandle_t xQueue, void *const pvBuffer, TickType_t xTicksToWait)
UBaseType_t uxQueueMessagesWaitingFromISR(const QueueHandle_t xQueue)
static void prvCopyDataFromQueue(Queue_t *const pxQueue, void *const pvBuffer) PRIVILEGED_FUNCTION
#define queueYIELD_IF_USING_PREEMPTION()
BaseType_t xQueueSemaphoreTake(QueueHandle_t xQueue, TickType_t xTicksToWait)
#define queueSEMAPHORE_QUEUE_ITEM_LENGTH
#define prvLockQueue(pxQueue)
#define prvIncrementQueueTxLock(pxQueue, cTxLock)
BaseType_t xQueuePeekFromISR(QueueHandle_t xQueue, void *const pvBuffer)
struct QueuePointers QueuePointers_t
struct QueueDefinition * QueueSetHandle_t
Type by which queue sets are referenced.
void vQueueSetQueueNumber(QueueHandle_t xQueue, UBaseType_t uxQueueNumber) PRIVILEGED_FUNCTION
#define queueSEND_TO_BACK
BaseType_t xQueueGiveMutexRecursive(QueueHandle_t xMutex) PRIVILEGED_FUNCTION
struct QueueDefinition * QueueHandle_t
QueueHandle_t xQueueCreateCountingSemaphoreStatic(const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue) PRIVILEGED_FUNCTION
QueueSetMemberHandle_t xQueueSelectFromSet(QueueSetHandle_t xQueueSet, const TickType_t xTicksToWait) PRIVILEGED_FUNCTION
BaseType_t xQueueTakeMutexRecursive(QueueHandle_t xMutex, TickType_t xTicksToWait) PRIVILEGED_FUNCTION
UBaseType_t uxQueueGetQueueNumber(QueueHandle_t xQueue) PRIVILEGED_FUNCTION
BaseType_t xQueueCRSendFromISR(QueueHandle_t xQueue, const void *pvItemToQueue, BaseType_t xCoRoutinePreviouslyWoken)
BaseType_t xQueueCRReceive(QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait)
TaskHandle_t xQueueGetMutexHolderFromISR(QueueHandle_t xSemaphore) PRIVILEGED_FUNCTION
uint8_t ucQueueGetQueueType(QueueHandle_t xQueue) PRIVILEGED_FUNCTION
#define queueQUEUE_TYPE_SET
BaseType_t xQueueRemoveFromSet(QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet) PRIVILEGED_FUNCTION
void vQueueWaitForMessageRestricted(QueueHandle_t xQueue, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely) PRIVILEGED_FUNCTION
BaseType_t xQueueCRSend(QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait)
#define queueQUEUE_TYPE_COUNTING_SEMAPHORE
TaskHandle_t xQueueGetMutexHolder(QueueHandle_t xSemaphore) PRIVILEGED_FUNCTION
QueueSetMemberHandle_t xQueueSelectFromSetFromISR(QueueSetHandle_t xQueueSet) PRIVILEGED_FUNCTION
QueueHandle_t xQueueCreateCountingSemaphore(const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount) PRIVILEGED_FUNCTION
QueueHandle_t xQueueCreateMutex(const uint8_t ucQueueType) PRIVILEGED_FUNCTION
QueueSetHandle_t xQueueCreateSet(const UBaseType_t uxEventQueueLength) PRIVILEGED_FUNCTION
BaseType_t xQueueCRReceiveFromISR(QueueHandle_t xQueue, void *pvBuffer, BaseType_t *pxTaskWoken)
BaseType_t xQueueAddToSet(QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet) PRIVILEGED_FUNCTION
QueueHandle_t xQueueCreateMutexStatic(const uint8_t ucQueueType, StaticQueue_t *pxStaticQueue) PRIVILEGED_FUNCTION
struct QueueDefinition * QueueSetMemberHandle_t
Queue sets can contain both queues and semaphores, so the QueueSetMemberHandle_t is defined as a type...
volatile UBaseType_t uxMessagesWaiting
The number of items currently in the queue.
volatile int8_t cTxLock
Stores the number of items transmitted to the queue (added to the queue) while the queue was locked.
int8_t * pcHead
Points to the beginning of the queue storage area.
UBaseType_t uxItemSize
The size of each items that the queue will hold.
union QueueDefinition::@111105124141011004250305032217055261062050125231 u
List_t xTasksWaitingToSend
List of tasks that are blocked waiting to post onto this queue.
int8_t * pcWriteTo
Points to the free next place in the storage area.
volatile int8_t cRxLock
Stores the number of items received from the queue (removed from the queue) while the queue was locke...
SemaphoreData_t xSemaphore
Data required exclusively when this structure is used as a semaphore.
UBaseType_t uxLength
The length of the queue defined as the number of items it will hold, not the number of bytes.
QueuePointers_t xQueue
Data required exclusively when this structure is used as a queue.
List_t xTasksWaitingToReceive
List of tasks that are blocked waiting to read from this queue.
int8_t * pcTail
Points to the byte at the end of the queue storage area.
int8_t * pcReadFrom
Points to the last place that a queued item was read from when the structure is used as a queue.
UBaseType_t uxRecursiveCallCount
Maintains a count of the number of times a recursive mutex has been recursively 'taken' when the stru...
TaskHandle_t xMutexHolder
The handle of the task that holds the mutex.
BaseType_t xTaskResumeAll(void) PRIVILEGED_FUNCTION
BaseType_t xTaskGetSchedulerState(void) PRIVILEGED_FUNCTION
BaseType_t xTaskPriorityDisinherit(TaskHandle_t const pxMutexHolder) PRIVILEGED_FUNCTION
#define taskSCHEDULER_SUSPENDED
BaseType_t xTaskRemoveFromEventList(const List_t *const pxEventList) PRIVILEGED_FUNCTION
struct tskTaskControlBlock * TaskHandle_t
void vTaskSuspendAll(void) PRIVILEGED_FUNCTION
BaseType_t xTaskCheckForTimeOut(TimeOut_t *const pxTimeOut, TickType_t *const pxTicksToWait) PRIVILEGED_FUNCTION
TaskHandle_t pvTaskIncrementMutexHeldCount(void) PRIVILEGED_FUNCTION
struct xTIME_OUT TimeOut_t
void vTaskPlaceOnEventList(List_t *const pxEventList, const TickType_t xTicksToWait) PRIVILEGED_FUNCTION
TaskHandle_t xTaskGetCurrentTaskHandle(void) PRIVILEGED_FUNCTION
#define tskIDLE_PRIORITY
Defines the priority used by the idle task.
void vTaskMissedYield(void) PRIVILEGED_FUNCTION
void vTaskInternalSetTimeOutState(TimeOut_t *const pxTimeOut) PRIVILEGED_FUNCTION
void vTaskPriorityDisinheritAfterTimeout(TaskHandle_t const pxMutexHolder, UBaseType_t uxHighestPriorityWaitingTask) PRIVILEGED_FUNCTION
BaseType_t xTaskPriorityInherit(TaskHandle_t const pxMutexHolder) PRIVILEGED_FUNCTION
#define taskEXIT_CRITICAL()
#define taskENTER_CRITICAL()
void vTaskPlaceOnEventListRestricted(List_t *const pxEventList, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely) PRIVILEGED_FUNCTION