|
From: | Furiantes Furiantes |
Subject: | [lwip-users] FreeRTOS :: LWIP xInsideISR == (portBASE_TYPE) |
Date: | Thu, 14 Nov 2013 18:57:43 +0100 |
u32_t sys_arch_mbox_fetch(sys_mbox_t *pxMailBox, void **ppvBuffer, u32_t ulTimeOut)
{
void *pvDummy;
portTickType xStartTime, xEndTime, xElapsed;
unsigned long ulReturn;
xStartTime = xTaskGetTickCount();
if(NULL == ppvBuffer) {
ppvBuffer = &pvDummy;
}
if(ulTimeOut != 0UL) {
configASSERT(xInsideISR == (portBASE_TYPE) 0);
if(pdTRUE == xQueueReceive(*pxMailBox, &(*ppvBuffer), ulTimeOut / portTICK_RATE_MS)) {
xEndTime = xTaskGetTickCount();
xElapsed = (xEndTime - xStartTime) * portTICK_RATE_MS;
ulReturn = xElapsed;
} else {
/* Timed out. */
*ppvBuffer = NULL;
ulReturn = SYS_ARCH_TIMEOUT;
}
} else {
while(pdTRUE != xQueueReceive(*pxMailBox, &(*ppvBuffer), portMAX_DELAY));
xEndTime = xTaskGetTickCount();
xElapsed = (xEndTime - xStartTime) * portTICK_RATE_MS;
if(xElapsed == 0UL) {
xElapsed = 1UL;
}
ulReturn = xElapsed;
}
return ulReturn;
}
[Prev in Thread] | Current Thread | [Next in Thread] |