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 )
362 err_t xReturn = ERR_MEM;
364 *pxMutex = xSemaphoreCreateMutex();
366 if( *pxMutex !=
NULL )
369 SYS_STATS_INC_USED( mutex );
373 SYS_STATS_INC( mutex.err );
383 while( xSemaphoreTake( *pxMutex, portMAX_DELAY ) != pdPASS );
390 xSemaphoreGive( *pxMutex );
398 SYS_STATS_DEC( mutex.used );
399 vQueueDelete( *pxMutex );
413 xSemaphoreGive( *pxSemaphore );
426 SYS_STATS_DEC(sem.used);
427 vQueueDelete( *pxSemaphore );
442 return xTaskGetTickCount();
465 xTaskHandle xCreatedTask;
466 portBASE_TYPE xResult;
469 xResult = xTaskCreate( pxThread, (
signed char * ) pcName, iStackSize, pvArg, iPriority, &xCreatedTask );
471 if( xResult == pdPASS )
473 xReturn = xCreatedTask;
504 vPortEnterCritical();