76 #define MPU_WRAPPERS_INCLUDED_FROM_API_FILE 82 #if ( configUSE_CO_ROUTINES == 1 ) 90 #undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE 94 #define queueUNLOCKED ( ( BaseType_t ) -1 ) 95 #define queueLOCKED_UNMODIFIED ( ( BaseType_t ) 0 ) 108 #define pxMutexHolder pcTail 109 #define uxQueueType pcHead 110 #define queueQUEUE_IS_MUTEX NULL 114 #define queueSEMAPHORE_QUEUE_ITEM_LENGTH ( ( UBaseType_t ) 0 ) 115 #define queueMUTEX_GIVE_BLOCK_TIME ( ( TickType_t ) 0U ) 117 #if( configUSE_PREEMPTION == 0 ) 120 #define queueYIELD_IF_USING_PREEMPTION() 122 #define queueYIELD_IF_USING_PREEMPTION() portYIELD_WITHIN_API() 152 #if ( configUSE_TRACE_FACILITY == 1 ) 157 #if ( configUSE_QUEUE_SETS == 1 ) 173 #if ( configQUEUE_REGISTRY_SIZE > 0 ) 178 typedef struct QUEUE_REGISTRY_ITEM
180 const char *pcQueueName;
182 } xQueueRegistryItem;
187 typedef xQueueRegistryItem QueueRegistryItem_t;
231 #if ( configUSE_QUEUE_SETS == 1 ) 245 #define prvLockQueue( pxQueue ) \ 246 taskENTER_CRITICAL(); \ 248 if( ( pxQueue )->xRxLock == queueUNLOCKED ) \ 250 ( pxQueue )->xRxLock = queueLOCKED_UNMODIFIED; \ 252 if( ( pxQueue )->xTxLock == queueUNLOCKED ) \ 254 ( pxQueue )->xTxLock = queueLOCKED_UNMODIFIED; \ 316 size_t xQueueSizeInBytes;
321 ( void ) ucQueueType;
328 xQueueSizeInBytes = ( size_t ) 0;
334 xQueueSizeInBytes = ( size_t ) ( uxQueueLength * uxItemSize ) + ( size_t ) 1;
340 if( pxNewQueue !=
NULL )
348 pxNewQueue->
pcHead = ( int8_t * ) pxNewQueue;
354 pxNewQueue->
pcHead = ( ( int8_t * ) pxNewQueue ) +
sizeof(
Queue_t );
359 pxNewQueue->
uxLength = uxQueueLength;
363 #if ( configUSE_TRACE_FACILITY == 1 ) 365 pxNewQueue->ucQueueType = ucQueueType;
369 #if( configUSE_QUEUE_SETS == 1 ) 371 pxNewQueue->pxQueueSetContainer =
NULL;
376 xReturn = pxNewQueue;
389 #if ( configUSE_MUTEXES == 1 ) 397 ( void ) ucQueueType;
401 if( pxNewQueue !=
NULL )
404 pxNewQueue->pxMutexHolder =
NULL;
421 #if ( configUSE_TRACE_FACILITY == 1 ) 423 pxNewQueue->ucQueueType = ucQueueType;
427 #if ( configUSE_QUEUE_SETS == 1 ) 429 pxNewQueue->pxQueueSetContainer =
NULL;
453 #if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) ) 483 #if ( configUSE_RECURSIVE_MUTEXES == 1 ) 538 #if ( configUSE_RECURSIVE_MUTEXES == 1 ) 580 #if ( configUSE_COUNTING_SEMAPHORES == 1 ) 591 if( xHandle !=
NULL )
593 ( (
Queue_t * ) xHandle )->uxMessagesWaiting = uxInitialCount;
618 #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) 639 xYieldRequired = prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition );
641 #if ( configUSE_QUEUE_SETS == 1 ) 643 if( pxQueue->pxQueueSetContainer !=
NULL )
645 if( prvNotifyQueueSetContainer( pxQueue, xCopyPosition ) ==
pdTRUE )
676 else if( xYieldRequired !=
pdFALSE )
709 else if( xYieldRequired !=
pdFALSE )
740 else if( xEntryTimeSet ==
pdFALSE )
765 if( prvIsQueueFull( pxQueue ) !=
pdFALSE )
775 prvUnlockQueue( pxQueue );
790 prvUnlockQueue( pxQueue );
797 prvUnlockQueue( pxQueue );
809 #if ( configUSE_ALTERNATIVE_API == 1 ) 829 prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition );
861 else if( xEntryTimeSet ==
pdFALSE )
874 if( prvIsQueueFull( pxQueue ) !=
pdFALSE )
899 #if ( configUSE_ALTERNATIVE_API == 1 ) 905 int8_t *pcOriginalReadPosition;
920 prvCopyDataFromQueue( pxQueue, pvBuffer );
929 #if ( configUSE_MUTEXES == 1 ) 997 else if( xEntryTimeSet ==
pdFALSE )
1010 if( prvIsQueueEmpty( pxQueue ) !=
pdFALSE )
1014 #if ( configUSE_MUTEXES == 1 ) 1096 ( void ) prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition );
1102 #if ( configUSE_QUEUE_SETS == 1 ) 1104 if( pxQueue->pxQueueSetContainer !=
NULL )
1106 if( prvNotifyQueueSetContainer( pxQueue, xCopyPosition ) ==
pdTRUE )
1111 if( pxHigherPriorityTaskWoken !=
NULL )
1113 *pxHigherPriorityTaskWoken =
pdTRUE;
1133 if( pxHigherPriorityTaskWoken !=
NULL )
1135 *pxHigherPriorityTaskWoken =
pdTRUE;
1161 if( pxHigherPriorityTaskWoken !=
NULL )
1163 *pxHigherPriorityTaskWoken =
pdTRUE;
1263 #if ( configUSE_QUEUE_SETS == 1 ) 1265 if( pxQueue->pxQueueSetContainer !=
NULL )
1272 if( pxHigherPriorityTaskWoken !=
NULL )
1274 *pxHigherPriorityTaskWoken =
pdTRUE;
1294 if( pxHigherPriorityTaskWoken !=
NULL )
1296 *pxHigherPriorityTaskWoken =
pdTRUE;
1322 if( pxHigherPriorityTaskWoken !=
NULL )
1324 *pxHigherPriorityTaskWoken =
pdTRUE;
1368 int8_t *pcOriginalReadPosition;
1373 #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) 1395 prvCopyDataFromQueue( pxQueue, pvBuffer );
1404 #if ( configUSE_MUTEXES == 1 ) 1476 else if( xEntryTimeSet ==
pdFALSE )
1501 if( prvIsQueueEmpty( pxQueue ) !=
pdFALSE )
1505 #if ( configUSE_MUTEXES == 1 ) 1523 prvUnlockQueue( pxQueue );
1536 prvUnlockQueue( pxQueue );
1542 prvUnlockQueue( pxQueue );
1583 prvCopyDataFromQueue( pxQueue, pvBuffer );
1598 if( pxHigherPriorityTaskWoken !=
NULL )
1600 *pxHigherPriorityTaskWoken =
pdTRUE;
1642 int8_t *pcOriginalReadPosition;
1675 prvCopyDataFromQueue( pxQueue, pvBuffer );
1700 uxReturn = ( (
Queue_t * ) xQueue )->uxMessagesWaiting;
1713 pxQueue = (
Queue_t * ) xQueue;
1732 uxReturn = ( (
Queue_t * ) xQueue )->uxMessagesWaiting;
1745 #if ( configQUEUE_REGISTRY_SIZE > 0 ) 1754 #if ( configUSE_TRACE_FACILITY == 1 ) 1758 return ( (
Queue_t * ) xQueue )->uxQueueNumber;
1764 #if ( configUSE_TRACE_FACILITY == 1 ) 1768 ( (
Queue_t * ) xQueue )->uxQueueNumber = uxQueueNumber;
1774 #if ( configUSE_TRACE_FACILITY == 1 ) 1778 return ( (
Queue_t * ) xQueue )->ucQueueType;
1790 #if ( configUSE_MUTEXES == 1 ) 1796 pxQueue->pxMutexHolder =
NULL;
1807 ( void ) memcpy( (
void * ) pxQueue->
pcWriteTo, pvItemToQueue, ( size_t ) pxQueue->
uxItemSize );
1858 static void prvCopyDataFromQueue(
Queue_t *
const pxQueue,
void *
const pvBuffer )
1871 ( void ) memcpy( (
void * ) pvBuffer, (
void * ) pxQueue->
u.
pcReadFrom, (
size_t ) pxQueue->
uxItemSize );
1876 static void prvUnlockQueue(
Queue_t *
const pxQueue )
1891 #if ( configUSE_QUEUE_SETS == 1 ) 1893 if( pxQueue->pxQueueSetContainer !=
NULL )
2069 #if ( configUSE_CO_ROUTINES == 1 ) 2081 if( prvIsQueueFull( pxQueue ) !=
pdFALSE )
2146 #if ( configUSE_CO_ROUTINES == 1 ) 2198 ( void ) memcpy( (
void * ) pvBuffer, (
void * ) pxQueue->
u.
pcReadFrom, (
unsigned ) pxQueue->
uxItemSize );
2236 #if ( configUSE_CO_ROUTINES == 1 ) 2250 if( xCoRoutinePreviouslyWoken ==
pdFALSE )
2278 return xCoRoutinePreviouslyWoken;
2284 #if ( configUSE_CO_ROUTINES == 1 ) 2306 ( void ) memcpy( (
void * ) pvBuffer, (
void * ) pxQueue->
u.
pcReadFrom, (
unsigned ) pxQueue->
uxItemSize );
2308 if( ( *pxCoRoutineWoken ) ==
pdFALSE )
2314 *pxCoRoutineWoken =
pdTRUE;
2344 #if ( configQUEUE_REGISTRY_SIZE > 0 ) 2354 if( xQueueRegistry[ ux ].pcQueueName ==
NULL )
2357 xQueueRegistry[ ux ].pcQueueName = pcQueueName;
2358 xQueueRegistry[ ux ].xHandle = xQueue;
2373 #if ( configQUEUE_REGISTRY_SIZE > 0 ) 2383 if( xQueueRegistry[ ux ].xHandle == xQueue )
2386 xQueueRegistry[ ux ].pcQueueName =
NULL;
2400 #if ( configUSE_TIMERS == 1 ) 2430 prvUnlockQueue( pxQueue );
2436 #if ( configUSE_QUEUE_SETS == 1 ) 2450 #if ( configUSE_QUEUE_SETS == 1 ) 2458 if( ( (
Queue_t * ) xQueueOrSemaphore )->pxQueueSetContainer !=
NULL )
2471 ( (
Queue_t * ) xQueueOrSemaphore )->pxQueueSetContainer = xQueueSet;
2483 #if ( configUSE_QUEUE_SETS == 1 ) 2488 Queue_t *
const pxQueueOrSemaphore = (
Queue_t * ) xQueueOrSemaphore;
2490 if( pxQueueOrSemaphore->pxQueueSetContainer != xQueueSet )
2507 pxQueueOrSemaphore->pxQueueSetContainer =
NULL;
2519 #if ( configUSE_QUEUE_SETS == 1 ) 2532 #if ( configUSE_QUEUE_SETS == 1 ) 2545 #if ( configUSE_QUEUE_SETS == 1 ) 2549 Queue_t *pxQueueSetContainer = pxQueue->pxQueueSetContainer;
2562 xReturn = prvCopyDataToQueue( pxQueueSetContainer, &pxQueue, xCopyPosition );
2585 ( pxQueueSetContainer->
xTxLock )++;
BaseType_t xQueueAddToSet(QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet) PRIVILEGED_FUNCTION
UBaseType_t uxQueueMessagesWaitingFromISR(const QueueHandle_t xQueue)
void vPortFree(void *pv) PRIVILEGED_FUNCTION
#define queueQUEUE_TYPE_SET
#define traceTAKE_MUTEX_RECURSIVE_FAILED(pxMutex)
BaseType_t xQueueTakeMutexRecursive(QueueHandle_t xMutex, TickType_t xTicksToWait) PRIVILEGED_FUNCTION
BaseType_t xQueueCRSendFromISR(QueueHandle_t xQueue, const void *pvItemToQueue, BaseType_t xCoRoutinePreviouslyWoken)
#define traceQUEUE_SEND_FROM_ISR(pxQueue)
void * QueueSetMemberHandle_t
union QueueDefinition::@46 u
#define queueYIELD_IF_USING_PREEMPTION()
void vQueueSetQueueNumber(QueueHandle_t xQueue, UBaseType_t uxQueueNumber) PRIVILEGED_FUNCTION
volatile BaseType_t xTxLock
List_t xTasksWaitingToReceive
TaskHandle_t xTaskGetCurrentTaskHandle(void) PRIVILEGED_FUNCTION
#define mtCOVERAGE_TEST_MARKER()
UBaseType_t uxQueueMessagesWaiting(const QueueHandle_t xQueue)
UBaseType_t uxRecursiveCallCount
#define queueQUEUE_TYPE_COUNTING_SEMAPHORE
#define queueLOCKED_UNMODIFIED
#define taskEXIT_CRITICAL()
void vTaskSuspendAll(void) PRIVILEGED_FUNCTION
#define vQueueAddToRegistry(xQueue, pcName)
#define traceQUEUE_RECEIVE_FROM_ISR_FAILED(pxQueue)
#define traceQUEUE_RECEIVE_FAILED(pxQueue)
#define portENABLE_INTERRUPTS()
#define queueSEMAPHORE_QUEUE_ITEM_LENGTH
void vTaskPlaceOnEventListRestricted(List_t *const pxEventList, const TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely) PRIVILEGED_FUNCTION
void * xQueueGetMutexHolder(QueueHandle_t xSemaphore) PRIVILEGED_FUNCTION
#define portDISABLE_INTERRUPTS()
void * pvTaskIncrementMutexHeldCount(void) PRIVILEGED_FUNCTION
#define traceQUEUE_RECEIVE(pxQueue)
void * pvPortMalloc(size_t xSize) PRIVILEGED_FUNCTION
#define portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedStatusValue)
#define portYIELD_WITHIN_API
QueueSetHandle_t xQueueCreateSet(const UBaseType_t uxEventQueueLength) PRIVILEGED_FUNCTION
#define listLIST_IS_EMPTY(pxList)
volatile UBaseType_t uxMessagesWaiting
#define traceQUEUE_PEEK_FROM_ISR_FAILED(pxQueue)
unsigned long UBaseType_t
#define queueSEND_TO_BACK
struct QueueDefinition xQUEUE
BaseType_t xQueueGenericReceive(QueueHandle_t xQueue, void *const pvBuffer, TickType_t xTicksToWait, const BaseType_t xJustPeeking)
volatile BaseType_t xRxLock
#define portSET_INTERRUPT_MASK_FROM_ISR()
#define traceQUEUE_SEND_FROM_ISR_FAILED(pxQueue)
QueueSetMemberHandle_t xQueueSelectFromSet(QueueSetHandle_t xQueueSet, const TickType_t xTicksToWait) PRIVILEGED_FUNCTION
BaseType_t xQueuePeekFromISR(QueueHandle_t xQueue, void *const pvBuffer)
#define traceGIVE_MUTEX_RECURSIVE_FAILED(pxMutex)
#define vQueueUnregisterQueue(xQueue)
QueueSetMemberHandle_t xQueueSelectFromSetFromISR(QueueSetHandle_t xQueueSet) PRIVILEGED_FUNCTION
BaseType_t xQueueIsQueueFullFromISR(const QueueHandle_t xQueue)
#define traceCREATE_MUTEX(pxNewQueue)
#define traceQUEUE_CREATE(pxNewQueue)
#define traceGIVE_MUTEX_RECURSIVE(pxMutex)
void vQueueWaitForMessageRestricted(QueueHandle_t xQueue, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely) PRIVILEGED_FUNCTION
BaseType_t xQueueReceiveFromISR(QueueHandle_t xQueue, void *const pvBuffer, BaseType_t *const pxHigherPriorityTaskWoken)
#define traceQUEUE_DELETE(pxQueue)
BaseType_t xTaskPriorityDisinherit(TaskHandle_t const pxMutexHolder) PRIVILEGED_FUNCTION
#define traceQUEUE_REGISTRY_ADD(xQueue, pcQueueName)
List_t xTasksWaitingToSend
void vTaskMissedYield(void) PRIVILEGED_FUNCTION
BaseType_t xQueueGiveMutexRecursive(QueueHandle_t pxMutex) PRIVILEGED_FUNCTION
UBaseType_t uxQueueGetQueueNumber(QueueHandle_t xQueue) PRIVILEGED_FUNCTION
QueueHandle_t xQueueGenericCreate(const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType)
#define traceQUEUE_SEND(pxQueue)
BaseType_t xQueueCRReceiveFromISR(QueueHandle_t xQueue, void *pvBuffer, BaseType_t *pxTaskWoken)
uint8_t ucQueueGetQueueType(QueueHandle_t xQueue) PRIVILEGED_FUNCTION
#define traceQUEUE_SEND_FAILED(pxQueue)
void vTaskPriorityInherit(TaskHandle_t const pxMutexHolder) PRIVILEGED_FUNCTION
#define traceBLOCKING_ON_QUEUE_SEND(pxQueue)
BaseType_t xQueueGenericReset(QueueHandle_t xQueue, BaseType_t xNewQueue)
#define traceCREATE_COUNTING_SEMAPHORE()
void vCoRoutineAddToDelayedList(TickType_t xTicksToDelay, List_t *pxEventList)
BaseType_t xQueueAltGenericSend(QueueHandle_t xQueue, const void *const pvItemToQueue, TickType_t xTicksToWait, BaseType_t xCopyPosition) PRIVILEGED_FUNCTION
#define traceTAKE_MUTEX_RECURSIVE(pxMutex)
BaseType_t xTaskResumeAll(void) PRIVILEGED_FUNCTION
BaseType_t xTaskGetSchedulerState(void) PRIVILEGED_FUNCTION
#define taskENTER_CRITICAL()
BaseType_t xQueueGenericSendFromISR(QueueHandle_t xQueue, const void *const pvItemToQueue, BaseType_t *const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition)
#define traceQUEUE_PEEK_FROM_ISR(pxQueue)
#define traceQUEUE_PEEK(pxQueue)
BaseType_t xQueueCRSend(QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait)
void vTaskSetTimeOutState(TimeOut_t *const pxTimeOut) PRIVILEGED_FUNCTION
QueueHandle_t xQueueCreateMutex(const uint8_t ucQueueType) PRIVILEGED_FUNCTION
#define queueQUEUE_IS_MUTEX
#define configQUEUE_REGISTRY_SIZE
BaseType_t xQueueRemoveFromSet(QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet) PRIVILEGED_FUNCTION
BaseType_t xCoRoutineRemoveFromEventList(const List_t *pxEventList)
BaseType_t xQueueIsQueueEmptyFromISR(const QueueHandle_t xQueue)
#define PRIVILEGED_FUNCTION
#define traceCREATE_COUNTING_SEMAPHORE_FAILED()
#define traceCREATE_MUTEX_FAILED()
#define queueMUTEX_GIVE_BLOCK_TIME
#define prvLockQueue(pxQueue)
BaseType_t xTaskCheckForTimeOut(TimeOut_t *const pxTimeOut, TickType_t *const pxTicksToWait) PRIVILEGED_FUNCTION
#define taskSCHEDULER_SUSPENDED
void vQueueDelete(QueueHandle_t xQueue)
#define portASSERT_IF_INTERRUPT_PRIORITY_INVALID()
BaseType_t xQueueCRReceive(QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait)
BaseType_t xQueueGenericSend(QueueHandle_t xQueue, const void *const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition)
BaseType_t xTaskRemoveFromEventList(const List_t *const pxEventList) PRIVILEGED_FUNCTION
void vTaskPlaceOnEventList(List_t *const pxEventList, const TickType_t xTicksToWait) PRIVILEGED_FUNCTION
void vListInitialise(List_t *const pxList) PRIVILEGED_FUNCTION
QueueHandle_t xQueueCreateCountingSemaphore(const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount) PRIVILEGED_FUNCTION
BaseType_t xQueueAltGenericReceive(QueueHandle_t xQueue, void *const pvBuffer, TickType_t xTicksToWait, BaseType_t xJustPeeking) PRIVILEGED_FUNCTION
BaseType_t xQueueGiveFromISR(QueueHandle_t xQueue, BaseType_t *const pxHigherPriorityTaskWoken)
#define traceBLOCKING_ON_QUEUE_RECEIVE(pxQueue)
#define traceQUEUE_RECEIVE_FROM_ISR(pxQueue)
UBaseType_t uxQueueSpacesAvailable(const QueueHandle_t xQueue)