]> git.sur5r.net Git - freertos/blobdiff - Source/tasks.c
Change "SWI" to "SWI 0".
[freertos] / Source / tasks.c
index 748b4621a8362260d46365cf2470a5dc106da685..6a78a5c0e2abcf4101796897729999e499e36210 100644 (file)
@@ -1,48 +1,54 @@
 /*\r
-       FreeRTOS V5.4.2 - Copyright (C) 2009 Real Time Engineers Ltd.\r
-\r
-       This file is part of the FreeRTOS distribution.\r
-\r
-       FreeRTOS is free software; you can redistribute it and/or modify it     under\r
-       the terms of the GNU General Public License (version 2) as published by the\r
-       Free Software Foundation and modified by the FreeRTOS exception.\r
-       **NOTE** The exception to the GPL is included to allow you to distribute a\r
-       combined work that includes FreeRTOS without being obliged to provide the\r
-       source code for proprietary components outside of the FreeRTOS kernel.\r
-       Alternative commercial license and support terms are also available upon\r
-       request.  See the licensing section of http://www.FreeRTOS.org for full\r
-       license details.\r
-\r
-       FreeRTOS is distributed in the hope that it will be useful,     but WITHOUT\r
-       ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
-       FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
-       more details.\r
-\r
-       You should have received a copy of the GNU General Public License along\r
-       with FreeRTOS; if not, write to the Free Software Foundation, Inc., 59\r
-       Temple Place, Suite 330, Boston, MA  02111-1307  USA.\r
-\r
-\r
-       ***************************************************************************\r
-       *                                                                                                                                                *\r
-       * Looking for a quick start?  Then check out the FreeRTOS eBook!                  *\r
-       * See http://www.FreeRTOS.org/Documentation for details                            *\r
-       *                                                                                                                                                *\r
-       ***************************************************************************\r
-\r
-       1 tab == 4 spaces!\r
-\r
-       Please ensure to read the configuration and relevant port sections of the\r
-       online documentation.\r
-\r
-       http://www.FreeRTOS.org - Documentation, latest information, license and\r
-       contact details.\r
-\r
-       http://www.SafeRTOS.com - A version that is certified for use in safety\r
-       critical systems.\r
-\r
-       http://www.OpenRTOS.com - Commercial support, development, porting,\r
-       licensing and training services.\r
+    FreeRTOS V6.0.1 - Copyright (C) 2009 Real Time Engineers Ltd.\r
+\r
+    ***************************************************************************\r
+    *                                                                         *\r
+    * If you are:                                                             *\r
+    *                                                                         *\r
+    *    + New to FreeRTOS,                                                   *\r
+    *    + Wanting to learn FreeRTOS or multitasking in general quickly       *\r
+    *    + Looking for basic training,                                        *\r
+    *    + Wanting to improve your FreeRTOS skills and productivity           *\r
+    *                                                                         *\r
+    * then take a look at the FreeRTOS eBook                                  *\r
+    *                                                                         *\r
+    *        "Using the FreeRTOS Real Time Kernel - a Practical Guide"        *\r
+    *                  http://www.FreeRTOS.org/Documentation                  *\r
+    *                                                                         *\r
+    * A pdf reference manual is also available.  Both are usually delivered   *\r
+    * to your inbox within 20 minutes to two hours when purchased between 8am *\r
+    * and 8pm GMT (although please allow up to 24 hours in case of            *\r
+    * exceptional circumstances).  Thank you for your support!                *\r
+    *                                                                         *\r
+    ***************************************************************************\r
+\r
+    This file is part of the FreeRTOS distribution.\r
+\r
+    FreeRTOS is free software; you can redistribute it and/or modify it under\r
+    the terms of the GNU General Public License (version 2) as published by the\r
+    Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
+    ***NOTE*** The exception to the GPL is included to allow you to distribute\r
+    a combined work that includes FreeRTOS without being obliged to provide the\r
+    source code for proprietary components outside of the FreeRTOS kernel.\r
+    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT\r
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
+    more details. You should have received a copy of the GNU General Public \r
+    License and the FreeRTOS license exception along with FreeRTOS; if not it \r
+    can be viewed here: http://www.freertos.org/a00114.html and also obtained \r
+    by writing to Richard Barry, contact details for whom are available on the\r
+    FreeRTOS WEB site.\r
+\r
+    1 tab == 4 spaces!\r
+\r
+    http://www.FreeRTOS.org - Documentation, latest information, license and\r
+    contact details.\r
+\r
+    http://www.SafeRTOS.com - A version that is certified for use in safety\r
+    critical systems.\r
+\r
+    http://www.OpenRTOS.com - Commercial support, development, porting,\r
+    licensing and training services.\r
 */\r
 \r
 \r
@@ -84,7 +90,7 @@ typedef struct tskTaskControlBlock
        xListItem                               xEventListItem;         /*< List item used to place the TCB in event lists. */\r
        unsigned portBASE_TYPE  uxPriority;                     /*< The priority of the task where 0 is the lowest priority. */\r
        portSTACK_TYPE                  *pxStack;                       /*< Points to the start of the stack. */\r
-       signed portCHAR                 pcTaskName[ configMAX_TASK_NAME_LEN ];/*< Descriptive name given to the task when created.  Facilitates debugging only. */\r
+       signed char                             pcTaskName[ configMAX_TASK_NAME_LEN ];/*< Descriptive name given to the task when created.  Facilitates debugging only. */\r
 \r
        #if ( portSTACK_GROWTH > 0 )\r
                portSTACK_TYPE *pxEndOfStack;                   /*< Used for stack overflow checking on architectures where the stack grows up from low memory. */\r
@@ -107,7 +113,7 @@ typedef struct tskTaskControlBlock
        #endif\r
 \r
        #if ( configGENERATE_RUN_TIME_STATS == 1 )\r
-               unsigned portLONG ulRunTimeCounter;             /*< Used for calculating how much CPU time each task is utilising. */\r
+               unsigned long ulRunTimeCounter;         /*< Used for calculating how much CPU time each task is utilising. */\r
        #endif\r
 \r
 } tskTCB;\r
@@ -160,9 +166,9 @@ PRIVILEGED_DATA static unsigned portBASE_TYPE uxTaskNumber                                          = ( unsigned po
 \r
 #if ( configGENERATE_RUN_TIME_STATS == 1 )\r
 \r
-       PRIVILEGED_DATA static portCHAR pcStatsString[ 50 ] ;\r
-       PRIVILEGED_DATA static unsigned portLONG ulTaskSwitchedInTime = 0UL;    /*< Holds the value of a timer/counter the last time a task was switched in. */\r
-       static void prvGenerateRunTimeStatsForTasksInList( const signed portCHAR *pcWriteBuffer, xList *pxList, unsigned portLONG ulTotalRunTime ) PRIVILEGED_FUNCTION;\r
+       PRIVILEGED_DATA static char pcStatsString[ 50 ] ;\r
+       PRIVILEGED_DATA static unsigned long ulTaskSwitchedInTime = 0UL;        /*< Holds the value of a timer/counter the last time a task was switched in. */\r
+       static void prvGenerateRunTimeStatsForTasksInList( const signed char *pcWriteBuffer, xList *pxList, unsigned long ulTotalRunTime ) PRIVILEGED_FUNCTION;\r
 \r
 #endif\r
 \r
@@ -177,23 +183,23 @@ PRIVILEGED_DATA static unsigned portBASE_TYPE uxTaskNumber                                                = ( unsigned po
 /*\r
  * Macros used by vListTask to indicate which state a task is in.\r
  */\r
-#define tskBLOCKED_CHAR                ( ( signed portCHAR ) 'B' )\r
-#define tskREADY_CHAR          ( ( signed portCHAR ) 'R' )\r
-#define tskDELETED_CHAR                ( ( signed portCHAR ) 'D' )\r
-#define tskSUSPENDED_CHAR      ( ( signed portCHAR ) 'S' )\r
+#define tskBLOCKED_CHAR                ( ( signed char ) 'B' )\r
+#define tskREADY_CHAR          ( ( signed char ) 'R' )\r
+#define tskDELETED_CHAR                ( ( signed char ) 'D' )\r
+#define tskSUSPENDED_CHAR      ( ( signed char ) 'S' )\r
 \r
 /*\r
  * Macros and private variables used by the trace facility.\r
  */\r
 #if ( configUSE_TRACE_FACILITY == 1 )\r
 \r
-       #define tskSIZE_OF_EACH_TRACE_LINE                      ( ( unsigned portLONG ) ( sizeof( unsigned portLONG ) + sizeof( unsigned portLONG ) ) )\r
-       PRIVILEGED_DATA static volatile signed portCHAR * volatile pcTraceBuffer;\r
-       PRIVILEGED_DATA static signed portCHAR *pcTraceBufferStart;\r
-       PRIVILEGED_DATA static signed portCHAR *pcTraceBufferEnd;\r
+       #define tskSIZE_OF_EACH_TRACE_LINE                      ( ( unsigned long ) ( sizeof( unsigned long ) + sizeof( unsigned long ) ) )\r
+       PRIVILEGED_DATA static volatile signed char * volatile pcTraceBuffer;\r
+       PRIVILEGED_DATA static signed char *pcTraceBufferStart;\r
+       PRIVILEGED_DATA static signed char *pcTraceBufferEnd;\r
        PRIVILEGED_DATA static signed portBASE_TYPE xTracing = pdFALSE;\r
-       PRIVILEGED_DATA static unsigned portBASE_TYPE uxPreviousTask = 255;\r
-       PRIVILEGED_DATA static portCHAR pcStatusString[ 50 ];\r
+       static unsigned portBASE_TYPE uxPreviousTask = 255;\r
+       PRIVILEGED_DATA static char pcStatusString[ 50 ];\r
 \r
 #endif\r
 \r
@@ -216,10 +222,10 @@ PRIVILEGED_DATA static unsigned portBASE_TYPE uxTaskNumber                                                = ( unsigned po
                                if( ( pcTraceBuffer + tskSIZE_OF_EACH_TRACE_LINE ) < pcTraceBufferEnd )                         \\r
                                {                                                                                                                                                                       \\r
                                        uxPreviousTask = pxCurrentTCB->uxTCBNumber;                                                                             \\r
-                                       *( unsigned portLONG * ) pcTraceBuffer = ( unsigned portLONG ) xTickCount;              \\r
-                                       pcTraceBuffer += sizeof( unsigned portLONG );                                                                   \\r
-                                       *( unsigned portLONG * ) pcTraceBuffer = ( unsigned portLONG ) uxPreviousTask;  \\r
-                                       pcTraceBuffer += sizeof( unsigned portLONG );                                                                   \\r
+                                       *( unsigned long * ) pcTraceBuffer = ( unsigned long ) xTickCount;              \\r
+                                       pcTraceBuffer += sizeof( unsigned long );                                                                       \\r
+                                       *( unsigned long * ) pcTraceBuffer = ( unsigned long ) uxPreviousTask;  \\r
+                                       pcTraceBuffer += sizeof( unsigned long );                                                                       \\r
                                }                                                                                                                                                                       \\r
                                else                                                                                                                                                            \\r
                                {                                                                                                                                                                       \\r
@@ -297,7 +303,7 @@ register tskTCB *pxTCB;                                                                                                                                                                                             \
  * Utility to ready a TCB for a given task.  Mainly just copies the parameters\r
  * into the TCB structure.\r
  */\r
-static void prvInitialiseTCBVariables( tskTCB *pxTCB, const signed portCHAR * const pcName, unsigned portBASE_TYPE uxPriority, const xMemoryRegion * const xRegions, unsigned portSHORT usStackDepth ) PRIVILEGED_FUNCTION;\r
+static void prvInitialiseTCBVariables( tskTCB *pxTCB, const signed char * const pcName, unsigned portBASE_TYPE uxPriority, const xMemoryRegion * const xRegions, unsigned short usStackDepth ) PRIVILEGED_FUNCTION;\r
 \r
 /*\r
  * Utility to ready all the lists used by the scheduler.  This is called\r
@@ -342,7 +348,7 @@ static void prvCheckTasksWaitingTermination( void ) PRIVILEGED_FUNCTION;
  * Allocates memory from the heap for a TCB and associated stack.  Checks the\r
  * allocation was successful.\r
  */\r
-static tskTCB *prvAllocateTCBAndStack( unsigned portSHORT usStackDepth, portSTACK_TYPE *puxStackBuffer ) PRIVILEGED_FUNCTION;\r
+static tskTCB *prvAllocateTCBAndStack( unsigned short usStackDepth, portSTACK_TYPE *puxStackBuffer ) PRIVILEGED_FUNCTION;\r
 \r
 /*\r
  * Called from vTaskList.  vListTasks details all the tasks currently under\r
@@ -355,7 +361,7 @@ static tskTCB *prvAllocateTCBAndStack( unsigned portSHORT usStackDepth, portSTAC
  */\r
 #if ( configUSE_TRACE_FACILITY == 1 )\r
 \r
-       static void prvListTaskWithinSingleList( const signed portCHAR *pcWriteBuffer, xList *pxList, signed portCHAR cStatus ) PRIVILEGED_FUNCTION;\r
+       static void prvListTaskWithinSingleList( const signed char *pcWriteBuffer, xList *pxList, signed char cStatus ) PRIVILEGED_FUNCTION;\r
 \r
 #endif\r
 \r
@@ -366,7 +372,7 @@ static tskTCB *prvAllocateTCBAndStack( unsigned portSHORT usStackDepth, portSTAC
  */\r
 #if ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) )\r
 \r
-       static unsigned portSHORT usTaskCheckFreeStackSpace( const unsigned portCHAR * pucStackByte ) PRIVILEGED_FUNCTION;\r
+       static unsigned short usTaskCheckFreeStackSpace( const unsigned char * pucStackByte ) PRIVILEGED_FUNCTION;\r
 \r
 #endif\r
 \r
@@ -379,11 +385,10 @@ static tskTCB *prvAllocateTCBAndStack( unsigned portSHORT usStackDepth, portSTAC
  * TASK CREATION API documented in task.h\r
  *----------------------------------------------------------*/\r
 \r
-signed portBASE_TYPE xTaskGenericCreate( pdTASK_CODE pxTaskCode, const signed portCHAR * const pcName, unsigned portSHORT usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pxCreatedTask, portSTACK_TYPE *puxStackBuffer, const xMemoryRegion * const xRegions )\r
+signed portBASE_TYPE xTaskGenericCreate( pdTASK_CODE pxTaskCode, const signed char * const pcName, unsigned short usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pxCreatedTask, portSTACK_TYPE *puxStackBuffer, const xMemoryRegion * const xRegions )\r
 {\r
 signed portBASE_TYPE xReturn;\r
 tskTCB * pxNewTCB;\r
-portBASE_TYPE xRunPrivileged;\r
 \r
        /* Allocate the memory required by the TCB and stack for the new task,\r
        checking that the allocation was successful. */\r
@@ -393,16 +398,19 @@ portBASE_TYPE xRunPrivileged;
        {\r
                portSTACK_TYPE *pxTopOfStack;\r
 \r
-               /* Should the task be created in privileged mode? */\r
-               if( ( uxPriority & portPRIVILEGE_BIT ) != 0x00 )\r
-               {\r
-                       xRunPrivileged = pdTRUE;\r
-               }\r
-               else\r
-               {\r
-                       xRunPrivileged = pdFALSE;\r
-               }\r
-               uxPriority &= ~portPRIVILEGE_BIT;\r
+               #if( portUSING_MPU_WRAPPERS == 1 )\r
+                       /* Should the task be created in privileged mode? */\r
+                       portBASE_TYPE xRunPrivileged;\r
+                       if( ( uxPriority & portPRIVILEGE_BIT ) != 0x00 )\r
+                       {\r
+                               xRunPrivileged = pdTRUE;\r
+                       }\r
+                       else\r
+                       {\r
+                               xRunPrivileged = pdFALSE;\r
+                       }\r
+                       uxPriority &= ~portPRIVILEGE_BIT;\r
+               #endif /* portUSING_MPU_WRAPPERS == 1 */\r
 \r
                /* Calculate the top of stack address.  This depends on whether the\r
                stack grows from high memory to low (as per the 80x86) or visa versa.\r
@@ -410,7 +418,8 @@ portBASE_TYPE xRunPrivileged;
                required by the port. */\r
                #if( portSTACK_GROWTH < 0 )\r
                {\r
-                       pxTopOfStack = pxNewTCB->pxStack + ( usStackDepth - 1 ) - ( ( usStackDepth - 1 ) % portBYTE_ALIGNMENT );\r
+                       pxTopOfStack = pxNewTCB->pxStack + ( usStackDepth - 1 );\r
+                       pxTopOfStack = ( portSTACK_TYPE * ) ( ( ( unsigned long ) pxTopOfStack ) & ( ( unsigned long ) ~portBYTE_ALIGNMENT_MASK  ) );\r
                }\r
                #else\r
                {\r
@@ -437,7 +446,6 @@ portBASE_TYPE xRunPrivileged;
                #else\r
                {\r
                        pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters );\r
-                       ( void ) xRunPrivileged;\r
                }\r
                #endif\r
 \r
@@ -1016,7 +1024,7 @@ void vTaskStartScheduler( void )
 portBASE_TYPE xReturn;\r
 \r
        /* Add the idle task at the lowest priority. */\r
-       xReturn = xTaskCreate( prvIdleTask, ( signed portCHAR * ) "IDLE", tskIDLE_STACK_SIZE, ( void * ) NULL, ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), ( xTaskHandle * ) NULL );\r
+       xReturn = xTaskCreate( prvIdleTask, ( signed char * ) "IDLE", tskIDLE_STACK_SIZE, ( void * ) NULL, ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), ( xTaskHandle * ) NULL );\r
 \r
        if( xReturn == pdPASS )\r
        {\r
@@ -1179,7 +1187,7 @@ unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void )
 \r
 #if ( configUSE_TRACE_FACILITY == 1 )\r
 \r
-       void vTaskList( signed portCHAR *pcWriteBuffer )\r
+       void vTaskList( signed char *pcWriteBuffer )\r
        {\r
        unsigned portBASE_TYPE uxQueue;\r
 \r
@@ -1191,8 +1199,8 @@ unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void )
                        /* Run through all the lists that could potentially contain a TCB and\r
                        report the task name, state and stack high water mark. */\r
 \r
-                       pcWriteBuffer[ 0 ] = ( signed portCHAR ) 0x00;\r
-                       strcat( ( portCHAR * ) pcWriteBuffer, ( const portCHAR * ) "\r\n" );\r
+                       pcWriteBuffer[ 0 ] = ( signed char ) 0x00;\r
+                       strcat( ( char * ) pcWriteBuffer, ( const char * ) "\r\n" );\r
 \r
                        uxQueue = uxTopUsedPriority + 1;\r
 \r
@@ -1204,7 +1212,7 @@ unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void )
                                {\r
                                        prvListTaskWithinSingleList( pcWriteBuffer, ( xList * ) &( pxReadyTasksLists[ uxQueue ] ), tskREADY_CHAR );\r
                                }\r
-                       }while( uxQueue > ( unsigned portSHORT ) tskIDLE_PRIORITY );\r
+                       }while( uxQueue > ( unsigned short ) tskIDLE_PRIORITY );\r
 \r
                        if( !listLIST_IS_EMPTY( pxDelayedTaskList ) )\r
                        {\r
@@ -1242,10 +1250,10 @@ unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void )
 \r
 #if ( configGENERATE_RUN_TIME_STATS == 1 )\r
 \r
-       void vTaskGetRunTimeStats( signed portCHAR *pcWriteBuffer )\r
+       void vTaskGetRunTimeStats( signed char *pcWriteBuffer )\r
        {\r
        unsigned portBASE_TYPE uxQueue;\r
-       unsigned portLONG ulTotalRunTime = portGET_RUN_TIME_COUNTER_VALUE();\r
+       unsigned long ulTotalRunTime = portGET_RUN_TIME_COUNTER_VALUE();\r
 \r
                /* This is a VERY costly function that should be used for debug only.\r
                It leaves interrupts disabled for a LONG time. */\r
@@ -1256,8 +1264,8 @@ unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void )
                        generating a table of run timer percentages in the provided\r
                        buffer. */\r
 \r
-                       pcWriteBuffer[ 0 ] = ( signed portCHAR ) 0x00;\r
-                       strcat( ( portCHAR * ) pcWriteBuffer, ( const portCHAR * ) "\r\n" );\r
+                       pcWriteBuffer[ 0 ] = ( signed char ) 0x00;\r
+                       strcat( ( char * ) pcWriteBuffer, ( const char * ) "\r\n" );\r
 \r
                        uxQueue = uxTopUsedPriority + 1;\r
 \r
@@ -1269,7 +1277,7 @@ unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void )
                                {\r
                                        prvGenerateRunTimeStatsForTasksInList( pcWriteBuffer, ( xList * ) &( pxReadyTasksLists[ uxQueue ] ), ulTotalRunTime );\r
                                }\r
-                       }while( uxQueue > ( unsigned portSHORT ) tskIDLE_PRIORITY );\r
+                       }while( uxQueue > ( unsigned short ) tskIDLE_PRIORITY );\r
 \r
                        if( !listLIST_IS_EMPTY( pxDelayedTaskList ) )\r
                        {\r
@@ -1307,11 +1315,11 @@ unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void )
 \r
 #if ( configUSE_TRACE_FACILITY == 1 )\r
 \r
-       void vTaskStartTrace( signed portCHAR * pcBuffer, unsigned portLONG ulBufferSize )\r
+       void vTaskStartTrace( signed char * pcBuffer, unsigned long ulBufferSize )\r
        {\r
                portENTER_CRITICAL();\r
                {\r
-                       pcTraceBuffer = ( signed portCHAR * )pcBuffer;\r
+                       pcTraceBuffer = ( signed char * )pcBuffer;\r
                        pcTraceBufferStart = pcBuffer;\r
                        pcTraceBufferEnd = pcBuffer + ( ulBufferSize - tskSIZE_OF_EACH_TRACE_LINE );\r
                        xTracing = pdTRUE;\r
@@ -1324,15 +1332,15 @@ unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void )
 \r
 #if ( configUSE_TRACE_FACILITY == 1 )\r
 \r
-       unsigned portLONG ulTaskEndTrace( void )\r
+       unsigned long ulTaskEndTrace( void )\r
        {\r
-       unsigned portLONG ulBufferLength;\r
+       unsigned long ulBufferLength;\r
 \r
                portENTER_CRITICAL();\r
                        xTracing = pdFALSE;\r
                portEXIT_CRITICAL();\r
 \r
-               ulBufferLength = ( unsigned portLONG ) ( pcTraceBuffer - pcTraceBufferStart );\r
+               ulBufferLength = ( unsigned long ) ( pcTraceBuffer - pcTraceBufferStart );\r
 \r
                return ulBufferLength;\r
        }\r
@@ -1407,10 +1415,10 @@ void vTaskIncrementTick( void )
 \r
        void vTaskCleanUpResources( void )\r
        {\r
-       unsigned portSHORT usQueue;\r
+       unsigned short usQueue;\r
        volatile tskTCB *pxTCB;\r
 \r
-               usQueue = ( unsigned portSHORT ) uxTopUsedPriority + ( unsigned portSHORT ) 1;\r
+               usQueue = ( unsigned short ) uxTopUsedPriority + ( unsigned short ) 1;\r
 \r
                /* Remove any TCB's from the ready queues. */\r
                do\r
@@ -1424,7 +1432,7 @@ void vTaskIncrementTick( void )
 \r
                                prvDeleteTCB( ( tskTCB * ) pxTCB );\r
                        }\r
-               }while( usQueue > ( unsigned portSHORT ) tskIDLE_PRIORITY );\r
+               }while( usQueue > ( unsigned short ) tskIDLE_PRIORITY );\r
 \r
                /* Remove any TCB's from the delayed queue. */\r
                while( !listLIST_IS_EMPTY( &xDelayedTaskList1 ) )\r
@@ -1557,7 +1565,7 @@ void vTaskSwitchContext( void )
 \r
        #if ( configGENERATE_RUN_TIME_STATS == 1 )\r
        {\r
-               unsigned portLONG ulTempCounter = portGET_RUN_TIME_COUNTER_VALUE();\r
+               unsigned long ulTempCounter = portGET_RUN_TIME_COUNTER_VALUE();\r
 \r
                        /* Add the amount of time the task has been running to the accumulated\r
                        time so far.  The time the task started running was stored in\r
@@ -1736,7 +1744,7 @@ portBASE_TYPE xReturn;
                        passed since vTaskSetTimeout() was called. */\r
                        xReturn = pdTRUE;\r
                }\r
-               else if( ( ( portTickType ) xTickCount - ( portTickType ) pxTimeOut->xTimeOnEntering ) < ( portTickType ) *pxTicksToWait )\r
+               else if( ( ( portTickType ) ( ( portTickType ) xTickCount - ( portTickType ) pxTimeOut->xTimeOnEntering ) ) < ( portTickType ) *pxTicksToWait )\r
                {\r
                        /* Not a genuine timeout. Adjust parameters for time remaining. */\r
                        *pxTicksToWait -= ( ( portTickType ) xTickCount - ( portTickType ) pxTimeOut->xTimeOnEntering );\r
@@ -1835,16 +1843,16 @@ static portTASK_FUNCTION( prvIdleTask, pvParameters )
 \r
 \r
 \r
-static void prvInitialiseTCBVariables( tskTCB *pxTCB, const signed portCHAR * const pcName, unsigned portBASE_TYPE uxPriority, const xMemoryRegion * const xRegions, unsigned portSHORT usStackDepth )\r
+static void prvInitialiseTCBVariables( tskTCB *pxTCB, const signed char * const pcName, unsigned portBASE_TYPE uxPriority, const xMemoryRegion * const xRegions, unsigned short usStackDepth )\r
 {\r
        /* Store the function name in the TCB. */\r
        #if configMAX_TASK_NAME_LEN > 1\r
        {\r
                /* Don't bring strncpy into the build unnecessarily. */\r
-               strncpy( ( char * ) pxTCB->pcTaskName, ( const char * ) pcName, ( unsigned portSHORT ) configMAX_TASK_NAME_LEN );\r
+               strncpy( ( char * ) pxTCB->pcTaskName, ( const char * ) pcName, ( unsigned short ) configMAX_TASK_NAME_LEN );\r
        }\r
        #endif\r
-       pxTCB->pcTaskName[ ( unsigned portSHORT ) configMAX_TASK_NAME_LEN - ( unsigned portSHORT ) 1 ] = '\0';\r
+       pxTCB->pcTaskName[ ( unsigned short ) configMAX_TASK_NAME_LEN - ( unsigned short ) 1 ] = '\0';\r
 \r
        /* This is used as an array index so must ensure it's not too large.  First\r
        remove the privilege bit if one is present. */\r
@@ -1988,7 +1996,7 @@ static void prvCheckTasksWaitingTermination( void )
 }\r
 /*-----------------------------------------------------------*/\r
 \r
-static tskTCB *prvAllocateTCBAndStack( unsigned portSHORT usStackDepth, portSTACK_TYPE *puxStackBuffer )\r
+static tskTCB *prvAllocateTCBAndStack( unsigned short usStackDepth, portSTACK_TYPE *puxStackBuffer )\r
 {\r
 tskTCB *pxNewTCB;\r
 \r
@@ -2022,19 +2030,28 @@ tskTCB *pxNewTCB;
 \r
 #if ( configUSE_TRACE_FACILITY == 1 )\r
 \r
-       static void prvListTaskWithinSingleList( const signed portCHAR *pcWriteBuffer, xList *pxList, signed portCHAR cStatus )\r
+       static void prvListTaskWithinSingleList( const signed char *pcWriteBuffer, xList *pxList, signed char cStatus )\r
        {\r
        volatile tskTCB *pxNextTCB, *pxFirstTCB;\r
-       unsigned portSHORT usStackRemaining;\r
+       unsigned short usStackRemaining;\r
 \r
                /* Write the details of all the TCB's in pxList into the buffer. */\r
                listGET_OWNER_OF_NEXT_ENTRY( pxFirstTCB, pxList );\r
                do\r
                {\r
                        listGET_OWNER_OF_NEXT_ENTRY( pxNextTCB, pxList );\r
-                       usStackRemaining = usTaskCheckFreeStackSpace( ( unsigned portCHAR * ) pxNextTCB->pxStack );\r
-                       sprintf( pcStatusString, ( portCHAR * ) "%s\t\t%c\t%u\t%u\t%u\r\n", pxNextTCB->pcTaskName, cStatus, ( unsigned int ) pxNextTCB->uxPriority, usStackRemaining, ( unsigned int ) pxNextTCB->uxTCBNumber );\r
-                       strcat( ( portCHAR * ) pcWriteBuffer, ( portCHAR * ) pcStatusString );\r
+                       #if ( portSTACK_GROWTH > 0 )\r
+                       {\r
+                               usStackRemaining = usTaskCheckFreeStackSpace( ( unsigned char * ) pxNextTCB->pxEndOfStack );\r
+                       }\r
+                       #else\r
+                       {\r
+                               usStackRemaining = usTaskCheckFreeStackSpace( ( unsigned char * ) pxNextTCB->pxStack );\r
+                       }\r
+                       #endif                  \r
+                       \r
+                       sprintf( pcStatusString, ( char * ) "%s\t\t%c\t%u\t%u\t%u\r\n", pxNextTCB->pcTaskName, cStatus, ( unsigned int ) pxNextTCB->uxPriority, usStackRemaining, ( unsigned int ) pxNextTCB->uxTCBNumber );\r
+                       strcat( ( char * ) pcWriteBuffer, ( char * ) pcStatusString );\r
 \r
                } while( pxNextTCB != pxFirstTCB );\r
        }\r
@@ -2044,10 +2061,10 @@ tskTCB *pxNewTCB;
 \r
 #if ( configGENERATE_RUN_TIME_STATS == 1 )\r
 \r
-       static void prvGenerateRunTimeStatsForTasksInList( const signed portCHAR *pcWriteBuffer, xList *pxList, unsigned portLONG ulTotalRunTime )\r
+       static void prvGenerateRunTimeStatsForTasksInList( const signed char *pcWriteBuffer, xList *pxList, unsigned long ulTotalRunTime )\r
        {\r
        volatile tskTCB *pxNextTCB, *pxFirstTCB;\r
-       unsigned portLONG ulStatsAsPercentage;\r
+       unsigned long ulStatsAsPercentage;\r
 \r
                /* Write the run time stats of all the TCB's in pxList into the buffer. */\r
                listGET_OWNER_OF_NEXT_ENTRY( pxFirstTCB, pxList );\r
@@ -2063,7 +2080,7 @@ tskTCB *pxNewTCB;
                                if( pxNextTCB->ulRunTimeCounter == 0 )\r
                                {\r
                                        /* The task has used no CPU time at all. */\r
-                                       sprintf( pcStatsString, ( portCHAR * ) "%s\t\t0\t\t0%%\r\n", pxNextTCB->pcTaskName );\r
+                                       sprintf( pcStatsString, ( char * ) "%s\t\t0\t\t0%%\r\n", pxNextTCB->pcTaskName );\r
                                }\r
                                else\r
                                {\r
@@ -2073,17 +2090,17 @@ tskTCB *pxNewTCB;
 \r
                                        if( ulStatsAsPercentage > 0UL )\r
                                        {\r
-                                               sprintf( pcStatsString, ( portCHAR * ) "%s\t\t%u\t\t%u%%\r\n", pxNextTCB->pcTaskName, ( unsigned int ) pxNextTCB->ulRunTimeCounter, ( unsigned int ) ulStatsAsPercentage );\r
+                                               sprintf( pcStatsString, ( char * ) "%s\t\t%u\t\t%u%%\r\n", pxNextTCB->pcTaskName, ( unsigned int ) pxNextTCB->ulRunTimeCounter, ( unsigned int ) ulStatsAsPercentage );\r
                                        }\r
                                        else\r
                                        {\r
                                                /* If the percentage is zero here then the task has\r
                                                consumed less than 1% of the total run time. */\r
-                                               sprintf( pcStatsString, ( portCHAR * ) "%s\t\t%u\t\t<1%%\r\n", pxNextTCB->pcTaskName, ( unsigned int ) pxNextTCB->ulRunTimeCounter );\r
+                                               sprintf( pcStatsString, ( char * ) "%s\t\t%u\t\t<1%%\r\n", pxNextTCB->pcTaskName, ( unsigned int ) pxNextTCB->ulRunTimeCounter );\r
                                        }\r
                                }\r
 \r
-                               strcat( ( portCHAR * ) pcWriteBuffer, ( portCHAR * ) pcStatsString );\r
+                               strcat( ( char * ) pcWriteBuffer, ( char * ) pcStatsString );\r
                        }\r
 \r
                } while( pxNextTCB != pxFirstTCB );\r
@@ -2094,9 +2111,9 @@ tskTCB *pxNewTCB;
 \r
 #if ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) )\r
 \r
-       static unsigned portSHORT usTaskCheckFreeStackSpace( const unsigned portCHAR * pucStackByte )\r
+       static unsigned short usTaskCheckFreeStackSpace( const unsigned char * pucStackByte )\r
        {\r
-       register unsigned portSHORT usCount = 0;\r
+       register unsigned short usCount = 0;\r
 \r
                while( *pucStackByte == tskSTACK_FILL_BYTE )\r
                {\r
@@ -2117,18 +2134,18 @@ tskTCB *pxNewTCB;
        unsigned portBASE_TYPE uxTaskGetStackHighWaterMark( xTaskHandle xTask )\r
        {\r
        tskTCB *pxTCB;\r
-       unsigned portCHAR *pcEndOfStack;\r
+       unsigned char *pcEndOfStack;\r
        unsigned portBASE_TYPE uxReturn;\r
 \r
                pxTCB = prvGetTCBFromHandle( xTask );\r
 \r
                #if portSTACK_GROWTH < 0\r
                {\r
-                       pcEndOfStack = ( unsigned portCHAR * ) pxTCB->pxStack;\r
+                       pcEndOfStack = ( unsigned char * ) pxTCB->pxStack;\r
                }\r
                #else\r
                {\r
-                       pcEndOfStack = ( unsigned portCHAR * ) pxTCB->pxEndOfStack;\r
+                       pcEndOfStack = ( unsigned char * ) pxTCB->pxEndOfStack;\r
                }\r
                #endif\r
 \r