portBASE_TYPE xQueueTakeMutexRecursive( xQueueHandle pxMutex, portTickType xBlockTime ) { portBASE_TYPE xReturn; /* Comments regarding mutual exclusion as per those within xQueueGiveMutexRecursive(). */ traceTAKE_MUTEX_RECURSIVE( pxMutex ); if( pxMutex->pxMutexHolder == xTaskGetCurrentTaskHandle() ) { ( pxMutex->uxRecursiveCallCount )++; xReturn = pdPASS; } else { xReturn = xQueueGenericReceive( pxMutex, NULL, xBlockTime, pdFALSE ); /* pdPASS will only be returned if we successfully obtained the mutex, we may have blocked to reach here. */ if( xReturn == pdPASS ) { ( pxMutex->uxRecursiveCallCount )++; } } return xReturn; }
signed portBASE_TYPE MPU_xQueueGenericReceive( xQueueHandle pxQueue, void * const pvBuffer, portTickType xTicksToWait, portBASE_TYPE xJustPeeking ) { portBASE_TYPE xRunningPrivileged = prvRaisePrivilege(); signed portBASE_TYPE xReturn; xReturn = xQueueGenericReceive( pxQueue, pvBuffer, xTicksToWait, xJustPeeking ); portRESET_PRIVILEGE( xRunningPrivileged ); return xReturn; }
BaseType_t MPU_xQueueGenericReceive( QueueHandle_t pxQueue, void * const pvBuffer, TickType_t xTicksToWait, BaseType_t xJustPeeking ) { BaseType_t xRunningPrivileged = prvRaisePrivilege(); BaseType_t xReturn; xReturn = xQueueGenericReceive( pxQueue, pvBuffer, xTicksToWait, xJustPeeking ); portRESET_PRIVILEGE( xRunningPrivileged ); return xReturn; }