33 #include "lwip/debug.h"
47 #include "lwip/stats.h"
61 err_t xReturn = ERR_MEM;
63 *pxMailBox = xQueueCreate( iSize,
sizeof(
void * ) );
65 if( *pxMailBox !=
NULL )
68 SYS_STATS_INC_USED( mbox );
89 unsigned long ulMessagesWaiting;
91 ulMessagesWaiting = uxQueueMessagesWaiting( *pxMailBox );
96 if( ulMessagesWaiting != 0UL )
98 SYS_STATS_INC( mbox.err );
101 SYS_STATS_DEC( mbox.used );
105 vQueueDelete( *pxMailBox );
119 while( xQueueSendToBack( *pxMailBox, &pxMessageToPost, portMAX_DELAY ) != pdTRUE );
139 if( xQueueSend( *pxMailBox, &pxMessageToPost, 0UL ) == pdPASS )
147 SYS_STATS_INC( mbox.err );
181 portTickType xStartTime, xEndTime, xElapsed;
182 unsigned long ulReturn;
184 xStartTime = xTaskGetTickCount();
186 if(
NULL == ppvBuffer )
188 ppvBuffer = &pvDummy;
191 if( ulTimeOut != 0UL )
193 if( pdTRUE == xQueueReceive( *pxMailBox, &( *ppvBuffer ), ulTimeOut/ portTICK_RATE_MS ) )
195 xEndTime = xTaskGetTickCount();
196 xElapsed = ( xEndTime - xStartTime ) * portTICK_RATE_MS;
204 ulReturn = SYS_ARCH_TIMEOUT;
209 while( pdTRUE != xQueueReceive( *pxMailBox, &( *ppvBuffer ), portMAX_DELAY ) );
210 xEndTime = xTaskGetTickCount();
211 xElapsed = ( xEndTime - xStartTime ) * portTICK_RATE_MS;
213 if( xElapsed == 0UL )
241 unsigned long ulReturn;
243 if( ppvBuffer==
NULL )
245 ppvBuffer = &pvDummy;
248 if( pdTRUE == xQueueReceive( *pxMailBox, &( *ppvBuffer ), 0UL ) )
254 ulReturn = SYS_MBOX_EMPTY;
275 err_t xReturn = ERR_MEM;
277 vSemaphoreCreateBinary( ( *pxSemaphore ) );
279 if( *pxSemaphore !=
NULL )
283 xSemaphoreTake( *pxSemaphore, 1UL );
287 SYS_STATS_INC_USED( sem );
291 SYS_STATS_INC( sem.err );
322 portTickType xStartTime, xEndTime, xElapsed;
323 unsigned long ulReturn;
325 xStartTime = xTaskGetTickCount();
327 if( ulTimeout != 0UL )
329 if( xSemaphoreTake( *pxSemaphore, ulTimeout / portTICK_RATE_MS ) == pdTRUE )
331 xEndTime = xTaskGetTickCount();
332 xElapsed = (xEndTime - xStartTime) * portTICK_RATE_MS;
337 ulReturn = SYS_ARCH_TIMEOUT;
342 while( xSemaphoreTake( *pxSemaphore, portMAX_DELAY ) != pdTRUE );
343 xEndTime = xTaskGetTickCount();
344 xElapsed = ( xEndTime - xStartTime ) * portTICK_RATE_MS;
346 if( xElapsed == 0UL )
364 err_t xReturn = ERR_MEM;
366 *pxMutex = xSemaphoreCreateMutex();
368 if( *pxMutex !=
NULL )
371 SYS_STATS_INC_USED( mutex );
375 SYS_STATS_INC( mutex.err );
385 while( xSemaphoreTake( *pxMutex, portMAX_DELAY ) != pdPASS );
392 xSemaphoreGive( *pxMutex );
400 SYS_STATS_DEC( mutex.used );
401 vQueueDelete( *pxMutex );
415 xSemaphoreGive( *pxSemaphore );
428 SYS_STATS_DEC(sem.used);
429 vQueueDelete( *pxSemaphore );
444 return xTaskGetTickCount();
467 xTaskHandle xCreatedTask;
468 portBASE_TYPE xResult;
471 xResult = xTaskCreate( pxThread, (
signed char * ) pcName, iStackSize, pvArg, iPriority, &xCreatedTask );
473 if( xResult == pdPASS )
475 xReturn = xCreatedTask;
506 vPortEnterCritical();