]> git.sur5r.net Git - freertos/commitdiff
Ensure data cannot be sent to a TCP socket if the socket is in the process of closing.
authorrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 30 Jan 2018 17:39:14 +0000 (17:39 +0000)
committerrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 30 Jan 2018 17:39:14 +0000 (17:39 +0000)
Correct definition of StaticTask_t in the case that portUSE_MPU_WRAPPERS is set to 1.
prvTaskCheckFreeStackSpace() now returns configSTACK_DEPTH_TYPE to allow return values greater than max uint16_t value if required.
xStreamBufferSend() and xStreamBufferReceive() no longer clear task notification bits - clearing was unnecessary as only the task notification state is used.

git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@2527 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

FreeRTOS-Plus/Source/FreeRTOS-Plus-TCP/FreeRTOS_Sockets.c
FreeRTOS/Source/include/FreeRTOS.h
FreeRTOS/Source/include/task.h
FreeRTOS/Source/stream_buffer.c
FreeRTOS/Source/tasks.c

index e40ce8d5f472df93a0b32566b8e873f860beaee1..10dc788ed0c7edba43b12849d00424b820cc1fc2 100644 (file)
@@ -2376,7 +2376,9 @@ void vSocketWakeUpUser( FreeRTOS_Socket_t *pxSocket )
                {\r
                        xResult = -pdFREERTOS_ERRNO_ENOMEM;\r
                }\r
-               else if( pxSocket->u.xTCP.ucTCPState == eCLOSED )\r
+               else if( ( pxSocket->u.xTCP.ucTCPState == eCLOSED ) ||\r
+                                ( pxSocket->u.xTCP.ucTCPState == eCLOSE_WAIT ) ||\r
+                                ( pxSocket->u.xTCP.ucTCPState == eCLOSING ) )\r
                {\r
                        xResult = -pdFREERTOS_ERRNO_ENOTCONN;\r
                }\r
index f974c73e779f37a71e8685900f528b886d6f3795..2b51f2b8f366b6354c57696b9326bf439eb7abd8 100644 (file)
@@ -1019,7 +1019,7 @@ typedef struct xSTATIC_TCB
                uint32_t                ulDummy18;\r
                uint8_t                 ucDummy19;\r
        #endif\r
-       #if( ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) || ( portUSING_MPU_WRAPPERS == 1 ) )\r
+       #if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )\r
                uint8_t                 uxDummy20;\r
        #endif\r
 \r
index df7ce95a6447e659546c82dd9c1a3087defe2e73..979cc4d2bb864072d4d1139c69b9979dfbdda1fb 100644 (file)
@@ -135,7 +135,7 @@ typedef struct xTASK_STATUS
        UBaseType_t uxBasePriority;             /* The priority to which the task will return if the task's current priority has been inherited to avoid unbounded priority inversion when obtaining a mutex.  Only valid if configUSE_MUTEXES is defined as 1 in FreeRTOSConfig.h. */\r
        uint32_t ulRunTimeCounter;              /* The total run time allocated to the task so far, as defined by the run time stats clock.  See http://www.freertos.org/rtos-run-time-stats.html.  Only valid when configGENERATE_RUN_TIME_STATS is defined as 1 in FreeRTOSConfig.h. */\r
        StackType_t *pxStackBase;               /* Points to the lowest address of the task's stack area. */\r
-       uint16_t usStackHighWaterMark;  /* The minimum amount of stack space that has remained for the task since the task was created.  The closer this value is to zero the closer the task has come to overflowing its stack. */\r
+       configSTACK_DEPTH_TYPE usStackHighWaterMark;    /* The minimum amount of stack space that has remained for the task since the task was created.  The closer this value is to zero the closer the task has come to overflowing its stack. */\r
 } TaskStatus_t;\r
 \r
 /* Possible return values for eTaskConfirmSleepModeStatus(). */\r
index c0ef7272a99b53d1060b6a231043981f15cdddb6..40619108a7755bd8ac4f6b13148d3b3ba359cbbc 100644 (file)
@@ -540,7 +540,7 @@ TimeOut_t xTimeOut;
                        taskEXIT_CRITICAL();\r
 \r
                        traceBLOCKING_ON_STREAM_BUFFER_SEND( xStreamBuffer );\r
-                       ( void ) xTaskNotifyWait( ( uint32_t ) 0, UINT32_MAX, NULL, xTicksToWait );\r
+                       ( void ) xTaskNotifyWait( ( uint32_t ) 0, ( uint32_t ) 0, NULL, xTicksToWait );\r
                        pxStreamBuffer->xTaskWaitingToSend = NULL;\r
 \r
                } while( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE );\r
@@ -746,7 +746,7 @@ size_t xReceivedLength = 0, xBytesAvailable, xBytesToStoreMessageLength;
                {\r
                        /* Wait for data to be available. */\r
                        traceBLOCKING_ON_STREAM_BUFFER_RECEIVE( xStreamBuffer );\r
-                       ( void ) xTaskNotifyWait( ( uint32_t ) 0, UINT32_MAX, NULL, xTicksToWait );\r
+                       ( void ) xTaskNotifyWait( ( uint32_t ) 0, ( uint32_t ) 0, NULL, xTicksToWait );\r
                        pxStreamBuffer->xTaskWaitingToReceive = NULL;\r
 \r
                        /* Recheck the data available after blocking. */\r
index 7e4d9c52080f2678df04dae016556a9c0050ef25..268c17c6254866101b9da7143cc91f4905d5a652 100644 (file)
@@ -509,7 +509,7 @@ static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait, const BaseT
  */\r
 #if ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) )\r
 \r
-       static uint16_t prvTaskCheckFreeStackSpace( const uint8_t * pucStackByte ) PRIVILEGED_FUNCTION;\r
+       static configSTACK_DEPTH_TYPE prvTaskCheckFreeStackSpace( const uint8_t * pucStackByte ) PRIVILEGED_FUNCTION;\r
 \r
 #endif\r
 \r
@@ -846,6 +846,8 @@ UBaseType_t x;
                uxPriority &= ~portPRIVILEGE_BIT;\r
        #endif /* portUSING_MPU_WRAPPERS == 1 */\r
 \r
+       configASSERT( pcName );\r
+\r
        /* Avoid dependency on memset() if it is not required. */\r
        #if( tskSET_NEW_STACKS_TO_KNOWN_VALUE == 1 )\r
        {\r
@@ -3625,7 +3627,7 @@ static void prvCheckTasksWaitingTermination( void )
 \r
 #if ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) )\r
 \r
-       static uint16_t prvTaskCheckFreeStackSpace( const uint8_t * pucStackByte )\r
+       static configSTACK_DEPTH_TYPE prvTaskCheckFreeStackSpace( const uint8_t * pucStackByte )\r
        {\r
        uint32_t ulCount = 0U;\r
 \r
@@ -3637,7 +3639,7 @@ static void prvCheckTasksWaitingTermination( void )
 \r
                ulCount /= ( uint32_t ) sizeof( StackType_t ); /*lint !e961 Casting is not redundant on smaller architectures. */\r
 \r
-               return ( uint16_t ) ulCount;\r
+               return ( configSTACK_DEPTH_TYPE ) ulCount;\r
        }\r
 \r
 #endif /* ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) ) */\r