]> git.sur5r.net Git - freertos/commitdiff
Remove compiler warning by ensure prvInitialiseMutex() is not included if configUSE_M...
authorrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Thu, 31 Mar 2016 15:22:10 +0000 (15:22 +0000)
committerrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Thu, 31 Mar 2016 15:22:10 +0000 (15:22 +0000)
Reduce the number of xTaskCreateStatic() parameters by having the function return the task handle, rather than pass the task handle out using a parameter.  This is also consistent with other objectCreate() functions.

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

13 files changed:
FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/RTOSDemo/src/main.c
FreeRTOS/Demo/CORTEX_EFM32_Giant_Gecko_Simplicity_Studio/main.c
FreeRTOS/Demo/CORTEX_EFM32_Pearl_Gecko_Simplicity_Studio/main.c
FreeRTOS/Demo/CORTEX_M4F_CEC1302_Keil/main.c
FreeRTOS/Demo/Common/Minimal/StaticAllocation.c
FreeRTOS/Demo/WIN32-MSVC-Static-Allocation-Only/main.c
FreeRTOS/Demo/WIN32-MSVC/main.c
FreeRTOS/Source/include/portable.h
FreeRTOS/Source/include/task.h
FreeRTOS/Source/portable/GCC/ARM_CM3_MPU/port.c
FreeRTOS/Source/queue.c
FreeRTOS/Source/tasks.c
FreeRTOS/Source/timers.c

index 9e6a540be8f8cc751a030b1b9462791f6763ae11..ff4ad6590187cd5c9f22ab135ebb848ffb9a32ee 100644 (file)
@@ -410,7 +410,7 @@ const uint32_t ulMaxDivisor = 0xff, ulDivisorShift = 0x08;
 /* configUSE_STATIC_ALLOCATION is set to 1, so the application must provide an\r
 implementation of vApplicationGetIdleTaskMemory() to provide the memory that is\r
 used by the Idle task. */\r
-void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint16_t *pusIdleTaskStackSize )\r
+void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize )\r
 {\r
 /* If the buffers to be provided to the Idle task are declared inside this\r
 function then they must be declared static - otherwise they will be allocated on\r
@@ -428,14 +428,14 @@ static StackType_t uxIdleTaskStack[ configMINIMAL_STACK_SIZE ];
        /* Pass out the size of the array pointed to by *ppxIdleTaskStackBuffer.\r
        Note that, as the array is necessarily of type StackType_t,\r
        configMINIMAL_STACK_SIZE is specified in words, not bytes. */\r
-       *pusIdleTaskStackSize = configMINIMAL_STACK_SIZE;\r
+       *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
 /* configUSE_STATIC_ALLOCATION and configUSE_TIMERS are both set to 1, so the\r
 application must provide an implementation of vApplicationGetTimerTaskMemory()\r
 to provide the memory that is used by the Timer service task. */\r
-void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint16_t *pusTimerTaskStackSize )\r
+void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize )\r
 {\r
 /* If the buffers to be provided to the Timer task are declared inside this\r
 function then they must be declared static - otherwise they will be allocated on\r
@@ -453,7 +453,7 @@ static StackType_t uxTimerTaskStack[ configTIMER_TASK_STACK_DEPTH ];
        /* Pass out the size of the array pointed to by *ppxTimerTaskStackBuffer.\r
        Note that, as the array is necessarily of type StackType_t,\r
        configMINIMAL_STACK_SIZE is specified in words, not bytes. */\r
-       *pusTimerTaskStackSize = configMINIMAL_STACK_SIZE;\r
+       *pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;\r
 }\r
 \r
 \r
index 7b4d7780d2055fa8dcfbbbe6cbf8736591cef22f..683c0af733ef929d5f57b2a0118a167c50b63900 100644 (file)
@@ -68,6 +68,8 @@
 */\r
 \r
 /******************************************************************************\r
+ * See http://www.freertos.org/EFM32-Giant-Gecko-Pearl-Gecko-tickless-RTOS-demo.html\r
+ *\r
  * This project provides two demo applications.  A simple blinky style project\r
  * that demonstrates low power tickless functionality, and a more comprehensive\r
  * test and demo application.  The configCREATE_LOW_POWER_DEMO setting, which is\r
 #include "bsp_trace.h"\r
 #include "sleep.h"\r
 \r
-/* Set mainCREATE_LOW_POWER_DEMO to one to run the simple blinky demo, or 0 to\r
-run the more comprehensive test and demo application. */\r
-#define mainCREATE_LOW_POWER_DEMO      0\r
-\r
 /*-----------------------------------------------------------*/\r
 \r
 /*\r
@@ -129,6 +127,11 @@ void vApplicationTickHook( void );
 \r
 int main( void )\r
 {\r
+       /*\r
+        * See the following link for instructions:\r
+        * http://www.freertos.org/EFM32-Giant-Gecko-Pearl-Gecko-tickless-RTOS-demo.html\r
+        */\r
+\r
        /* Configure the hardware ready to run the demo. */\r
        prvSetupHardware();\r
 \r
@@ -225,7 +228,7 @@ void vApplicationTickHook( void )
 /* configUSE_STATIC_ALLOCATION is set to 1, so the application must provide an\r
 implementation of vApplicationGetIdleTaskMemory() to provide the memory that is\r
 used by the Idle task. */\r
-void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint16_t *pusIdleTaskStackSize )\r
+void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize )\r
 {\r
 /* If the buffers to be provided to the Idle task are declared inside this\r
 function then they must be declared static - otherwise they will be allocated on\r
@@ -243,14 +246,14 @@ static StackType_t uxIdleTaskStack[ configMINIMAL_STACK_SIZE ];
        /* Pass out the size of the array pointed to by *ppxIdleTaskStackBuffer.\r
        Note that, as the array is necessarily of type StackType_t,\r
        configMINIMAL_STACK_SIZE is specified in words, not bytes. */\r
-       *pusIdleTaskStackSize = configMINIMAL_STACK_SIZE;\r
+       *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
 /* configUSE_STATIC_ALLOCATION and configUSE_TIMERS are both set to 1, so the\r
 application must provide an implementation of vApplicationGetTimerTaskMemory()\r
 to provide the memory that is used by the Timer service task. */\r
-void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint16_t *pusTimerTaskStackSize )\r
+void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize )\r
 {\r
 /* If the buffers to be provided to the Timer task are declared inside this\r
 function then they must be declared static - otherwise they will be allocated on\r
@@ -268,6 +271,6 @@ static StackType_t uxTimerTaskStack[ configTIMER_TASK_STACK_DEPTH ];
        /* Pass out the size of the array pointed to by *ppxTimerTaskStackBuffer.\r
        Note that, as the array is necessarily of type StackType_t,\r
        configMINIMAL_STACK_SIZE is specified in words, not bytes. */\r
-       *pusTimerTaskStackSize = configMINIMAL_STACK_SIZE;\r
+       *pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;\r
 }\r
 \r
index 8b985572614db3aba5ad6ae51fc60c714c00f424..c9dbb1859a0ed0202e2e772c483dab8672fa012d 100644 (file)
@@ -68,6 +68,8 @@
 */\r
 \r
 /******************************************************************************\r
+ * See http://www.freertos.org/EFM32-Giant-Gecko-Pearl-Gecko-tickless-RTOS-demo.html\r
+ *\r
  * This project provides two demo applications.  A simple blinky style project\r
  * that demonstrates low power tickless functionality, and a more comprehensive\r
  * test and demo application.  The configCREATE_LOW_POWER_DEMO setting, which is\r
@@ -125,6 +127,11 @@ void vApplicationTickHook( void );
 \r
 int main( void )\r
 {\r
+       /*\r
+        * See the following link for instructions:\r
+        * http://www.freertos.org/EFM32-Giant-Gecko-Pearl-Gecko-tickless-RTOS-demo.html\r
+        */\r
+\r
        /* Configure the hardware ready to run the demo. */\r
        prvSetupHardware();\r
 \r
@@ -232,7 +239,7 @@ void vApplicationTickHook( void )
 /* configUSE_STATIC_ALLOCATION is set to 1, so the application must provide an\r
 implementation of vApplicationGetIdleTaskMemory() to provide the memory that is\r
 used by the Idle task. */\r
-void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint16_t *pusIdleTaskStackSize )\r
+void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize )\r
 {\r
 /* If the buffers to be provided to the Idle task are declared inside this\r
 function then they must be declared static - otherwise they will be allocated on\r
@@ -250,14 +257,14 @@ static StackType_t uxIdleTaskStack[ configMINIMAL_STACK_SIZE ];
        /* Pass out the size of the array pointed to by *ppxIdleTaskStackBuffer.\r
        Note that, as the array is necessarily of type StackType_t,\r
        configMINIMAL_STACK_SIZE is specified in words, not bytes. */\r
-       *pusIdleTaskStackSize = configMINIMAL_STACK_SIZE;\r
+       *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
 /* configUSE_STATIC_ALLOCATION and configUSE_TIMERS are both set to 1, so the\r
 application must provide an implementation of vApplicationGetTimerTaskMemory()\r
 to provide the memory that is used by the Timer service task. */\r
-void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint16_t *pusTimerTaskStackSize )\r
+void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize )\r
 {\r
 /* If the buffers to be provided to the Timer task are declared inside this\r
 function then they must be declared static - otherwise they will be allocated on\r
@@ -275,5 +282,5 @@ static StackType_t uxTimerTaskStack[ configTIMER_TASK_STACK_DEPTH ];
        /* Pass out the size of the array pointed to by *ppxTimerTaskStackBuffer.\r
        Note that, as the array is necessarily of type StackType_t,\r
        configMINIMAL_STACK_SIZE is specified in words, not bytes. */\r
-       *pusTimerTaskStackSize = configMINIMAL_STACK_SIZE;\r
+       *pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;\r
 }\r
index 82115564d8dbaa1c2dea2fa06c4ea2fc001ccc2b..4576a899a8a28e8758b095be0a80cecbd7e4c4dd 100644 (file)
@@ -237,7 +237,7 @@ void vApplicationTickHook( void )
 /* configUSE_STATIC_ALLOCATION is set to 1, so the application must provide an\r
 implementation of vApplicationGetIdleTaskMemory() to provide the memory that is\r
 used by the Idle task. */\r
-void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint16_t *pusIdleTaskStackSize )\r
+void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize )\r
 {\r
 /* If the buffers to be provided to the Idle task are declared inside this\r
 function then they must be declared static - otherwise they will be allocated on\r
@@ -255,14 +255,14 @@ static StackType_t uxIdleTaskStack[ configMINIMAL_STACK_SIZE ];
        /* Pass out the size of the array pointed to by *ppxIdleTaskStackBuffer.\r
        Note that, as the array is necessarily of type StackType_t,\r
        configMINIMAL_STACK_SIZE is specified in words, not bytes. */\r
-       *pusIdleTaskStackSize = configMINIMAL_STACK_SIZE;\r
+       *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
 /* configUSE_STATIC_ALLOCATION and configUSE_TIMERS are both set to 1, so the\r
 application must provide an implementation of vApplicationGetTimerTaskMemory()\r
 to provide the memory that is used by the Timer service task. */\r
-void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint16_t *pusTimerTaskStackSize )\r
+void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize )\r
 {\r
 /* If the buffers to be provided to the Timer task are declared inside this\r
 function then they must be declared static - otherwise they will be allocated on\r
@@ -280,7 +280,7 @@ static StackType_t uxTimerTaskStack[ configTIMER_TASK_STACK_DEPTH ];
        /* Pass out the size of the array pointed to by *ppxTimerTaskStackBuffer.\r
        Note that, as the array is necessarily of type StackType_t,\r
        configMINIMAL_STACK_SIZE is specified in words, not bytes. */\r
-       *pusTimerTaskStackSize = configMINIMAL_STACK_SIZE;\r
+       *pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;\r
 }\r
 \r
 \r
index 05227218f47f369e78bbf91ae251c90f4b6c35b4..d4e8f6d7b334823e3e6fbccc51bf987c205f57f3 100644 (file)
@@ -251,7 +251,6 @@ void vStartStaticallyAllocatedTasks( void  )
                                           staticCREATOR_TASK_STACK_SIZE,               /* Size of the buffer passed in as the stack - in words, not bytes! */\r
                                           NULL,                                                                /* Parameter passed into the task - not used in this case. */\r
                                           staticTASK_PRIORITY,                                 /* Priority of the task. */\r
-                                          NULL,                                                                /* Handle of the task being created, not used in this case. */\r
                                           &( uxCreatorTaskStackBuffer[ 0 ] ),  /* The buffer to use as the task's stack. */\r
                                           &xCreatorTaskTCBBuffer );                    /* The variable that will hold the task's TCB. */\r
 \r
@@ -773,7 +772,6 @@ StaticEventGroup_t xEventGroupBuffer;
 static void prvCreateAndDeleteStaticallyAllocatedTasks( void )\r
 {\r
 TaskHandle_t xCreatedTask;\r
-BaseType_t xReturned;\r
 \r
 /* The variable that will hold the TCB of tasks created by this function.  See\r
 the comments above the declaration of the xCreatorTaskTCBBuffer variable for\r
@@ -791,38 +789,40 @@ static StackType_t uxStackBuffer[ configMINIMAL_STACK_SIZE ];
        StaticTask_t structure that will hold the task's TCB.  If both pointers are\r
        passed as NULL then the respective object will be allocated dynamically as\r
        if xTaskCreate() had been called. */\r
-       xReturned = xTaskCreateStatic(\r
+       xCreatedTask = xTaskCreateStatic(\r
                                                prvStaticallyAllocatedTask,     /* Function that implements the task. */\r
                                                "Static",                                               /* Human readable name for the task. */\r
                                                configMINIMAL_STACK_SIZE,               /* Task's stack size, in words (not bytes!). */\r
                                                NULL,                                                   /* Parameter to pass into the task. */\r
                                                uxTaskPriorityGet( NULL ) + 1,  /* The priority of the task. */\r
-                                               &xCreatedTask,                                  /* Handle of the task being created. */\r
                                                &( uxStackBuffer[ 0 ] ),                /* The buffer to use as the task's stack. */\r
                                                &xTCBBuffer );                                  /* The variable that will hold that task's TCB. */\r
 \r
-       /* The created task had a higher priority so should have executed and\r
-       suspended itself by now. */\r
-       if( eTaskGetState( xCreatedTask ) != eSuspended )\r
+       /* Check the task was created correctly, then delete the task. */\r
+       if( xCreatedTask == NULL )\r
        {\r
                xErrorOccurred = pdTRUE;\r
        }\r
-\r
-       /* Check the task was created correctly, then delete the task. */\r
-       configASSERT( xReturned == pdPASS );\r
-       if( xReturned != pdPASS )\r
+       else if( eTaskGetState( xCreatedTask ) != eSuspended )\r
        {\r
+               /* The created task had a higher priority so should have executed and\r
+               suspended itself by now. */\r
                xErrorOccurred = pdTRUE;\r
        }\r
-       vTaskDelete( xCreatedTask );\r
+       else\r
+       {\r
+               vTaskDelete( xCreatedTask );\r
+       }\r
 \r
        /* Now do the same using a dynamically allocated task to ensure the delete\r
        function is working correctly in both the static and dynamic allocation\r
        cases. */\r
        #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\r
        {\r
+       BaseType_t xReturned;\r
+\r
                xReturned = xTaskCreate(\r
-                                                                       prvStaticallyAllocatedTask,             /* Function that implements the task. */\r
+                                                                       prvStaticallyAllocatedTask,             /* Function that implements the task - the same function is used but is actually dynamically allocated this time. */\r
                                                                        "Static",                                               /* Human readable name for the task. */\r
                                                                        configMINIMAL_STACK_SIZE,               /* Task's stack size, in words (not bytes!). */\r
                                                                        NULL,                                                   /* Parameter to pass into the task. */\r
index d0324eae1689fa6f39d695c4209babee2f0413e5..b51b8dbb9c522c3154b8ad8afb7070d0142cf3db 100644 (file)
@@ -109,7 +109,7 @@ void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName );
  * application callback function must be provided to supply the RAM that will\r
  * get used for the Idle task data structures and stack.\r
  */\r
-void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint16_t *pusIdleTaskStackSize );\r
+void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize );\r
 \r
 /*\r
 * This demo has configSUPPORT_STATIC_ALLOCATION set to 1 and configUSE_TIMERS\r
@@ -117,7 +117,7 @@ void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackTy
 * supply the RAM that will get used for the Timer task data structures and\r
 * stack.\r
 */\r
-void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint16_t *pusTimerTaskStackSize );\r
+void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize );\r
 \r
 /* This demo only uses the standard demo tasks that use statically allocated\r
 RAM.  A 'check' task is also created to periodically inspect the demo tasks to\r
@@ -166,7 +166,7 @@ static StackType_t ucTaskStack[ configMINIMAL_STACK_SIZE * sizeof( StackType_t )
 \r
        /* Create the task, which will use the RAM allocated by the linker to the\r
        variables declared in this function. */\r
-       xTaskCreateStatic( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, NULL, ucTaskStack, &xCheckTask );\r
+       xTaskCreateStatic( prvCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, ucTaskStack, &xCheckTask );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
@@ -244,7 +244,7 @@ volatile uint32_t ulSetToNonZeroInDebuggerToContinue = 0;
 /* configUSE_STATIC_ALLOCATION is set to 1, so the application must provide an\r
 implementation of vApplicationGetIdleTaskMemory() to provide the memory that is\r
 used by the Idle task. */\r
-void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint16_t *pusIdleTaskStackSize )\r
+void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize )\r
 {\r
 /* If the buffers to be provided to the Idle task are declared inside this\r
 function then they must be declared static - otherwise they will be allocated on\r
@@ -262,14 +262,14 @@ static StackType_t uxIdleTaskStack[ configMINIMAL_STACK_SIZE ];
        /* Pass out the size of the array pointed to by *ppxIdleTaskStackBuffer.\r
        Note that, as the array is necessarily of type StackType_t,\r
        configMINIMAL_STACK_SIZE is specified in words, not bytes. */\r
-       *pusIdleTaskStackSize = configMINIMAL_STACK_SIZE;\r
+       *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
 /* configUSE_STATIC_ALLOCATION and configUSE_TIMERS are both set to 1, so the\r
 application must provide an implementation of vApplicationGetTimerTaskMemory()\r
 to provide the memory that is used by the Timer service task. */\r
-void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint16_t *pusTimerTaskStackSize )\r
+void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize )\r
 {\r
 /* If the buffers to be provided to the Timer task are declared inside this\r
 function then they must be declared static - otherwise they will be allocated on\r
@@ -287,6 +287,6 @@ static StackType_t uxTimerTaskStack[ configTIMER_TASK_STACK_DEPTH ];
        /* Pass out the size of the array pointed to by *ppxTimerTaskStackBuffer.\r
        Note that, as the array is necessarily of type StackType_t,\r
        configMINIMAL_STACK_SIZE is specified in words, not bytes. */\r
-       *pusTimerTaskStackSize = configMINIMAL_STACK_SIZE;\r
+       *pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;\r
 }\r
 \r
index 0dc342f44e95ae7b6973bd265ba72dcdcb41fe83..61d8e54ac7d3f9a5696bae6e321ae428fc804624 100644 (file)
@@ -154,8 +154,8 @@ void vApplicationMallocFailedHook( void );
 void vApplicationIdleHook( void );\r
 void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName );\r
 void vApplicationTickHook( void );\r
-void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint16_t *pusIdleTaskStackSize );\r
-void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint16_t *pusTimerTaskStackSize );\r
+void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize );\r
+void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize );\r
 \r
 /*\r
  * Writes trace data to a disk file when the trace recording is stopped.\r
@@ -413,7 +413,7 @@ const HeapRegion_t xHeapRegions[] =
 /* configUSE_STATIC_ALLOCATION is set to 1, so the application must provide an\r
 implementation of vApplicationGetIdleTaskMemory() to provide the memory that is\r
 used by the Idle task. */\r
-void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint16_t *pusIdleTaskStackSize )\r
+void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize )\r
 {\r
 /* If the buffers to be provided to the Idle task are declared inside this\r
 function then they must be declared static - otherwise they will be allocated on\r
@@ -431,14 +431,14 @@ static StackType_t uxIdleTaskStack[ configMINIMAL_STACK_SIZE ];
        /* Pass out the size of the array pointed to by *ppxIdleTaskStackBuffer.\r
        Note that, as the array is necessarily of type StackType_t,\r
        configMINIMAL_STACK_SIZE is specified in words, not bytes. */\r
-       *pusIdleTaskStackSize = configMINIMAL_STACK_SIZE;\r
+       *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
 /* configUSE_STATIC_ALLOCATION and configUSE_TIMERS are both set to 1, so the\r
 application must provide an implementation of vApplicationGetTimerTaskMemory()\r
 to provide the memory that is used by the Timer service task. */\r
-void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint16_t *pusTimerTaskStackSize )\r
+void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize )\r
 {\r
 /* If the buffers to be provided to the Timer task are declared inside this\r
 function then they must be declared static - otherwise they will be allocated on\r
@@ -455,6 +455,6 @@ static StaticTask_t xTimerTaskTCB;
        /* Pass out the size of the array pointed to by *ppxTimerTaskStackBuffer.\r
        Note that, as the array is necessarily of type StackType_t,\r
        configMINIMAL_STACK_SIZE is specified in words, not bytes. */\r
-       *pusTimerTaskStackSize = configMINIMAL_STACK_SIZE;\r
+       *pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;\r
 }\r
 \r
index e9179ccc92880363d2889da1432ebdd88409c145..cdcf98e2dd849423e402ae30a334f9f54ff15ee8 100644 (file)
@@ -196,7 +196,7 @@ void vPortEndScheduler( void ) PRIVILEGED_FUNCTION;
  */\r
 #if( portUSING_MPU_WRAPPERS == 1 )\r
        struct xMEMORY_REGION;\r
-       void vPortStoreTaskMPUSettings( xMPU_SETTINGS *xMPUSettings, const struct xMEMORY_REGION * const xRegions, StackType_t *pxBottomOfStack, uint16_t usStackDepth ) PRIVILEGED_FUNCTION;\r
+       void vPortStoreTaskMPUSettings( xMPU_SETTINGS *xMPUSettings, const struct xMEMORY_REGION * const xRegions, StackType_t *pxBottomOfStack, uint32_t ulStackDepth ) PRIVILEGED_FUNCTION;\r
 #endif\r
 \r
 #ifdef __cplusplus\r
index 11c2a06604ca4252305ec0f68d317a2f28f1c34f..385c66388d768d91293c6fb273d7fac2af7f1c96 100644 (file)
@@ -363,16 +363,13 @@ is used in assert() statements. */
 /**\r
  * task. h\r
  *<pre>\r
- BaseType_t xTaskCreateStatic(\r
-                                                         TaskFunction_t pvTaskCode,\r
-                                                         const char * const pcName,\r
-                                                         uint16_t usStackDepth,\r
-                                                         void *pvParameters,\r
-                                                         UBaseType_t uxPriority,\r
-                                                         TaskHandle_t *pvCreatedTask,\r
-                                                         StackType_t *pxStackBuffer,\r
-                                                         StaticTask_t *pxTaskBuffer\r
-                                                 );</pre>\r
+ TaskHandle_t xTaskCreateStatic( TaskFunction_t pvTaskCode,\r
+                                                                const char * const pcName,\r
+                                                                uint32_t ulStackDepth,\r
+                                                                void *pvParameters,\r
+                                                                UBaseType_t uxPriority,\r
+                                                                StackType_t *pxStackBuffer,\r
+                                                                StaticTask_t *pxTaskBuffer );</pre>\r
  *\r
  * Create a new task and add it to the list of tasks that are ready to run.\r
  *\r
@@ -393,9 +390,9 @@ is used in assert() statements. */
  * facilitate debugging.  The maximum length of the string is defined by\r
  * configMAX_TASK_NAME_LEN in FreeRTOSConfig.h.\r
  *\r
- * @param usStackDepth The size of the task stack specified as the number of\r
+ * @param ulStackDepth The size of the task stack specified as the number of\r
  * variables the stack can hold - not the number of bytes.  For example, if\r
- * the stack is 32-bits wide and usStackDepth is defined as 100 then 400 bytes\r
+ * the stack is 32-bits wide and ulStackDepth is defined as 100 then 400 bytes\r
  * will be allocated for stack storage.\r
  *\r
  * @param pvParameters Pointer that will be used as the parameter for the task\r
@@ -403,11 +400,8 @@ is used in assert() statements. */
  *\r
  * @param uxPriority The priority at which the task will run.\r
  *\r
- * @param pvCreatedTask Used to pass back a handle by which the created task\r
- * can be referenced.  Pass as NULL if the handle is not required.\r
- *\r
  * @param pxStackBuffer Must point to a StackType_t array that has at least\r
- * usStackDepth indexes - the array will then be used as the task's stack,\r
+ * ulStackDepth indexes - the array will then be used as the task's stack,\r
  * removing the need for the stack to be allocated dynamically.\r
  *\r
  * @param pxTaskBuffer Must point to a variable of type StaticTask_t, which will\r
@@ -422,49 +416,59 @@ is used in assert() statements. */
  * Example usage:\r
    <pre>\r
 \r
- // Dimensions the buffer that the task being created will use as its stack.\r
- // NOTE:  This is the number of words the stack will hold, not the number of\r
- // bytes.  For example, if each stack item is 32-bits, and this is set to 100,\r
- // then 400 bytes (100 * 32-bits) will be allocated.\r
- #define STACK_SIZE 200\r
-\r
- // Structure that will hold the TCB of the task being created.\r
- StaticTask_t xTaskBuffer;\r
-\r
- // Buffer that the task being created will use as its stack.\r
- StackType_t xStack[ STACK_SIZE ];\r
-\r
- // Task to be created.\r
- void vTaskCode( void * pvParameters )\r
- {\r
-        for( ;; )\r
-        {\r
-                // Task code goes here.\r
-        }\r
- }\r
-\r
- // Function that creates a task.\r
- void vOtherFunction( void )\r
- {\r
- static uint8_t ucParameterToPass;\r
- TaskHandle_t xHandle = NULL;\r
-\r
-        // Create the task without using any dynamic memory allocation.\r
-        xTaskCreateStatic( vTaskCode,          // As per xTaskCreate() parameter.\r
-                                       "NAME",             // As per xTaskCreate() parameter.\r
-                                       STACK_SIZE,         // As per xTaskCreate() parameter.\r
-                                       &ucParameterToPass, // As per xTaskCreate() parameter.\r
-                                       tskIDLE_PRIORITY,   // As per xTaskCreate() parameter.\r
-                                       &xHandle,           // As per xTaskCreate() parameter.\r
-                                       xStack,             // Pointer to the buffer that the task being created will use as its stack.\r
-                                       &xTaskBuffer );     // Pointer to a StaticTask_t structure for use as the memory require by the task.\r
- }\r
+    // Dimensions the buffer that the task being created will use as its stack.\r
+    // NOTE:  This is the number of words the stack will hold, not the number of\r
+    // bytes.  For example, if each stack item is 32-bits, and this is set to 100,\r
+    // then 400 bytes (100 * 32-bits) will be allocated.\r
+    #define STACK_SIZE 200\r
+\r
+    // Structure that will hold the TCB of the task being created.\r
+    StaticTask_t xTaskBuffer;\r
+\r
+    // Buffer that the task being created will use as its stack.  Note this is\r
+    // an array of StackType_t variables.  The size of StackType_t is dependent on\r
+    // the RTOS port.\r
+    StackType_t xStack[ STACK_SIZE ];\r
+\r
+    // Function that implements the task being created.\r
+    void vTaskCode( void * pvParameters )\r
+    {\r
+        // The parameter value is expected to be 1 as 1 is passed in the\r
+        // pvParameters value in the call to xTaskCreateStatic().\r
+        configASSERT( ( uint32_t ) pvParameters == 1UL );\r
+\r
+        for( ;; )\r
+        {\r
+            // Task code goes here.\r
+        }\r
+    }\r
+\r
+    // Function that creates a task.\r
+    void vOtherFunction( void )\r
+    {\r
+        TaskHandle_t xHandle = NULL;\r
+\r
+        // Create the task without using any dynamic memory allocation.\r
+        xHandle = xTaskCreateStatic(\r
+                      vTaskCode,       // Function that implements the task.\r
+                      "NAME",          // Text name for the task.\r
+                      STACK_SIZE,      // Stack size in words, not bytes.\r
+                      ( void * ) 1,    // Parameter passed into the task.\r
+                      tskIDLE_PRIORITY,// Priority at which the task is created.\r
+                      xStack,          // Array to use as the task's stack.\r
+                      &xTaskBuffer );  // Variable to hold the task's data structure.\r
+\r
+        // puxStackBuffer and pxTaskBuffer were not NULL, so the task will have\r
+        // been created, and xHandle will be the task's handle.  Use the handle\r
+        // to suspend the task.\r
+        vTaskSuspend( xHandle );\r
+    }\r
    </pre>\r
  * \defgroup xTaskCreateStatic xTaskCreateStatic\r
  * \ingroup Tasks\r
  */\r
 #if( configSUPPORT_STATIC_ALLOCATION == 1 )\r
-       BaseType_t xTaskCreateStatic( TaskFunction_t pxTaskCode, const char * const pcName, const uint16_t usStackDepth, void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask, StackType_t * const puxStackBuffer, StaticTask_t * const pxTaskBuffer ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\r
+       TaskHandle_t xTaskCreateStatic( TaskFunction_t pxTaskCode, const char * const pcName, const uint32_t ulStackDepth, void * const pvParameters, UBaseType_t uxPriority, StackType_t * const puxStackBuffer, StaticTask_t * const pxTaskBuffer ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\r
 #endif /* configSUPPORT_STATIC_ALLOCATION */\r
 \r
 /**\r
index f5420d519d936ac24f5b3d1fe91a0c5a7695cb01..4746230a210a4c6e7774b78cfcc546ec429c756c 100644 (file)
@@ -72,7 +72,7 @@
  *----------------------------------------------------------*/\r
 \r
 #error This port is not supported in this V9.0.0 pre-release revision, but will be supported in the final release.  For now use V8.2.3 instead.\r
\r
+\r
 /* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining\r
 all the API functions to use the MPU wrappers.  That should only be done when\r
 task.h is included from an application file. */\r
@@ -581,7 +581,7 @@ static BaseType_t prvRaisePrivilege( void )
 }\r
 /*-----------------------------------------------------------*/\r
 \r
-void vPortStoreTaskMPUSettings( xMPU_SETTINGS *xMPUSettings, const struct xMEMORY_REGION * const xRegions, StackType_t *pxBottomOfStack, uint16_t usStackDepth )\r
+void vPortStoreTaskMPUSettings( xMPU_SETTINGS *xMPUSettings, const struct xMEMORY_REGION * const xRegions, StackType_t *pxBottomOfStack, uint32_t ulStackDepth )\r
 {\r
 extern uint32_t __SRAM_segment_start__[];\r
 extern uint32_t __SRAM_segment_end__[];\r
@@ -630,7 +630,7 @@ uint32_t ul;
                which case the stack region parameters will be valid.  At all other\r
                times the stack parameters will not be valid and it is assumed that the\r
                stack region has already been configured. */\r
-               if( usStackDepth > 0 )\r
+               if( ulStackDepth > 0 )\r
                {\r
                        /* Define the region that allows access to the stack. */\r
                        xMPUSettings->xRegion[ 0 ].ulRegionBaseAddress =\r
@@ -640,7 +640,7 @@ uint32_t ul;
 \r
                        xMPUSettings->xRegion[ 0 ].ulRegionAttribute =\r
                                        ( portMPU_REGION_READ_WRITE ) | /* Read and write. */\r
-                                       ( prvGetMPURegionSizeSetting( ( uint32_t ) usStackDepth * ( uint32_t ) sizeof( StackType_t ) ) ) |\r
+                                       ( prvGetMPURegionSizeSetting( ulStackDepth * ( uint32_t ) sizeof( StackType_t ) ) ) |\r
                                        ( portMPU_REGION_CACHEABLE_BUFFERABLE ) |\r
                                        ( portMPU_REGION_ENABLE );\r
                }\r
@@ -1159,7 +1159,7 @@ BaseType_t xRunningPrivileged = prvRaisePrivilege();
 /*-----------------------------------------------------------*/\r
 \r
 #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )\r
-       \r
+\r
        void *MPU_pvPortMalloc( size_t xSize )\r
        {\r
        void *pvReturn;\r
@@ -1171,7 +1171,7 @@ BaseType_t xRunningPrivileged = prvRaisePrivilege();
 \r
                return pvReturn;\r
        }\r
-       \r
+\r
 #endif /* configSUPPORT_DYNAMIC_ALLOCATION */\r
 /*-----------------------------------------------------------*/\r
 \r
@@ -1185,7 +1185,7 @@ BaseType_t xRunningPrivileged = prvRaisePrivilege();
 \r
                portRESET_PRIVILEGE( xRunningPrivileged );\r
        }\r
-       \r
+\r
 #endif /* configSUPPORT_DYNAMIC_ALLOCATION */\r
 /*-----------------------------------------------------------*/\r
 \r
index 81f86d83649b95fd382c1372fd0b0d6a37f0f9ea..d2a628db297583f0ad16a39eda35d4916ac29b1e 100644 (file)
@@ -251,7 +251,9 @@ static void prvInitialiseNewQueue( const UBaseType_t uxQueueLength, const UBaseT
  * queue is created, then prvInitialiseMutex() is called to configure the queue\r
  * as a mutex.\r
  */\r
-static void prvInitialiseMutex( Queue_t *pxNewQueue );\r
+#if( configUSE_MUTEXES == 1 )\r
+       static void prvInitialiseMutex( Queue_t *pxNewQueue ) PRIVILEGED_FUNCTION;\r
+#endif\r
 \r
 /*-----------------------------------------------------------*/\r
 \r
@@ -469,30 +471,34 @@ static void prvInitialiseNewQueue( const UBaseType_t uxQueueLength, const UBaseT
 }\r
 /*-----------------------------------------------------------*/\r
 \r
-static void prvInitialiseMutex( Queue_t *pxNewQueue )\r
-{\r
-       if( pxNewQueue != NULL )\r
+#if( configUSE_MUTEXES == 1 )\r
+\r
+       static void prvInitialiseMutex( Queue_t *pxNewQueue )\r
        {\r
-               /* The queue create function will set all the queue structure members\r
-               correctly for a generic queue, but this function is creating a\r
-               mutex.  Overwrite those members that need to be set differently -\r
-               in particular the information required for priority inheritance. */\r
-               pxNewQueue->pxMutexHolder = NULL;\r
-               pxNewQueue->uxQueueType = queueQUEUE_IS_MUTEX;\r
+               if( pxNewQueue != NULL )\r
+               {\r
+                       /* The queue create function will set all the queue structure members\r
+                       correctly for a generic queue, but this function is creating a\r
+                       mutex.  Overwrite those members that need to be set differently -\r
+                       in particular the information required for priority inheritance. */\r
+                       pxNewQueue->pxMutexHolder = NULL;\r
+                       pxNewQueue->uxQueueType = queueQUEUE_IS_MUTEX;\r
 \r
-               /* In case this is a recursive mutex. */\r
-               pxNewQueue->u.uxRecursiveCallCount = 0;\r
+                       /* In case this is a recursive mutex. */\r
+                       pxNewQueue->u.uxRecursiveCallCount = 0;\r
 \r
-               traceCREATE_MUTEX( pxNewQueue );\r
+                       traceCREATE_MUTEX( pxNewQueue );\r
 \r
-               /* Start with the semaphore in the expected state. */\r
-               ( void ) xQueueGenericSend( pxNewQueue, NULL, ( TickType_t ) 0U, queueSEND_TO_BACK );\r
-       }\r
-       else\r
-       {\r
-               traceCREATE_MUTEX_FAILED();\r
+                       /* Start with the semaphore in the expected state. */\r
+                       ( void ) xQueueGenericSend( pxNewQueue, NULL, ( TickType_t ) 0U, queueSEND_TO_BACK );\r
+               }\r
+               else\r
+               {\r
+                       traceCREATE_MUTEX_FAILED();\r
+               }\r
        }\r
-}\r
+\r
+#endif /* configUSE_MUTEXES */\r
 /*-----------------------------------------------------------*/\r
 \r
 #if( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )\r
index 47f38bea92840c45cc3efbecd462dd9cc4a20952..390878af64ed655ebb87a19855679fb89ea873f5 100644 (file)
@@ -413,7 +413,7 @@ PRIVILEGED_DATA static volatile UBaseType_t uxSchedulerSuspended    = ( UBaseType_t
 #endif\r
 \r
 #if( configSUPPORT_STATIC_ALLOCATION == 1 )\r
-       extern void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint16_t *pusIdleTaskStackSize );\r
+       extern void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize );\r
 #endif\r
 \r
 /* File private functions. --------------------------------*/\r
@@ -542,7 +542,7 @@ static void prvResetNextTaskUnblockTime( void );
  * Called after a Task_t structure has been allocated either statically or\r
  * dynamically to fill in the structure's members.\r
  */\r
-static void prvInitialiseNewTask( TaskFunction_t pxTaskCode, const char * const pcName, const uint16_t usStackDepth, void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask, TCB_t *pxNewTCB ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\r
+static void prvInitialiseNewTask( TaskFunction_t pxTaskCode, const char * const pcName, const uint32_t ulStackDepth, void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask, TCB_t *pxNewTCB ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\r
 \r
 /*\r
  * Called after a new task has been created and initialised to place the task\r
@@ -554,10 +554,10 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB ) PRIVILEGED_FUNCTION;
 \r
 #if( configSUPPORT_STATIC_ALLOCATION == 1 )\r
 \r
-       BaseType_t xTaskCreateStatic( TaskFunction_t pxTaskCode, const char * const pcName, const uint16_t usStackDepth, void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask, StackType_t * const puxStackBuffer, StaticTask_t * const pxTaskBuffer ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\r
+       TaskHandle_t xTaskCreateStatic( TaskFunction_t pxTaskCode, const char * const pcName, const uint32_t ulStackDepth, void * const pvParameters, UBaseType_t uxPriority, StackType_t * const puxStackBuffer, StaticTask_t * const pxTaskBuffer ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\r
        {\r
        TCB_t *pxNewTCB;\r
-       BaseType_t xReturn;\r
+       TaskHandle_t xReturn;\r
 \r
                configASSERT( puxStackBuffer != NULL );\r
                configASSERT( pxTaskBuffer != NULL );\r
@@ -577,13 +577,12 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB ) PRIVILEGED_FUNCTION;
                        }\r
                        #endif /* configSUPPORT_DYNAMIC_ALLOCATION */\r
 \r
-                       prvInitialiseNewTask( pxTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTask, pxNewTCB );\r
+                       prvInitialiseNewTask( pxTaskCode, pcName, ulStackDepth, pvParameters, uxPriority, &xReturn, pxNewTCB );\r
                        prvAddNewTaskToReadyList( pxNewTCB );\r
-                       xReturn = pdPASS;\r
                }\r
                else\r
                {\r
-                       xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY;\r
+                       xReturn = NULL;\r
                }\r
 \r
                return xReturn;\r
@@ -665,7 +664,7 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB ) PRIVILEGED_FUNCTION;
                        }\r
                        #endif /* configSUPPORT_STATIC_ALLOCATION */\r
 \r
-                       prvInitialiseNewTask( pxTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTask, pxNewTCB );\r
+                       prvInitialiseNewTask( pxTaskCode, pcName, ( uint32_t ) usStackDepth, pvParameters, uxPriority, pxCreatedTask, pxNewTCB );\r
                        prvAddNewTaskToReadyList( pxNewTCB );\r
                        xReturn = pdPASS;\r
                }\r
@@ -680,7 +679,7 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB ) PRIVILEGED_FUNCTION;
 #endif /* configSUPPORT_DYNAMIC_ALLOCATION */\r
 /*-----------------------------------------------------------*/\r
 \r
-static void prvInitialiseNewTask( TaskFunction_t pxTaskCode, const char * const pcName, const uint16_t usStackDepth, void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask, TCB_t *pxNewTCB ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\r
+static void prvInitialiseNewTask( TaskFunction_t pxTaskCode, const char * const pcName, const uint32_t ulStackDepth, void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask, TCB_t *pxNewTCB ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\r
 {\r
 StackType_t *pxTopOfStack;\r
 UBaseType_t x;\r
@@ -703,7 +702,7 @@ UBaseType_t x;
        #if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) || ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) )\r
        {\r
                /* Fill the stack with a known value to assist debugging. */\r
-               ( void ) memset( pxNewTCB->pxStack, ( int ) tskSTACK_FILL_BYTE, ( size_t ) usStackDepth * sizeof( StackType_t ) );\r
+               ( void ) memset( pxNewTCB->pxStack, ( int ) tskSTACK_FILL_BYTE, ( size_t ) ulStackDepth * sizeof( StackType_t ) );\r
        }\r
        #endif /* ( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) || ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) ) ) */\r
 \r
@@ -713,7 +712,7 @@ UBaseType_t x;
        by the port. */\r
        #if( portSTACK_GROWTH < 0 )\r
        {\r
-               pxTopOfStack = pxNewTCB->pxStack + ( usStackDepth - ( uint16_t ) 1 );\r
+               pxTopOfStack = pxNewTCB->pxStack + ( ulStackDepth - ( uint32_t ) 1 );\r
                pxTopOfStack = ( StackType_t * ) ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack ) & ( ~( ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ) ) ); /*lint !e923 MISRA exception.  Avoiding casts between pointers and integers is not practical.  Size differences accounted for using portPOINTER_SIZE_TYPE type. */\r
 \r
                /* Check the alignment of the calculated top of stack is correct. */\r
@@ -728,7 +727,7 @@ UBaseType_t x;
 \r
                /* The other extreme of the stack space is required if stack checking is\r
                performed. */\r
-               pxNewTCB->pxEndOfStack = pxNewTCB->pxStack + ( usStackDepth - ( uint16_t ) 1 );\r
+               pxNewTCB->pxEndOfStack = pxNewTCB->pxStack + ( ulStackDepth - ( uint32_t ) 1 );\r
        }\r
        #endif /* portSTACK_GROWTH */\r
 \r
@@ -804,7 +803,7 @@ UBaseType_t x;
 \r
        #if ( portUSING_MPU_WRAPPERS == 1 )\r
        {\r
-               vPortStoreTaskMPUSettings( &( pxNewTCB->xMPUSettings ), xRegions, pxNewTCB->pxStack, usStackDepth );\r
+               vPortStoreTaskMPUSettings( &( pxNewTCB->xMPUSettings ), xRegions, pxNewTCB->pxStack, ulStackDepth );\r
        }\r
        #endif\r
 \r
@@ -1730,23 +1729,32 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB )
 void vTaskStartScheduler( void )\r
 {\r
 BaseType_t xReturn;\r
-uint16_t usIdleTaskStackSize = configMINIMAL_STACK_SIZE;\r
 \r
        /* Add the idle task at the lowest priority. */\r
        #if( configSUPPORT_STATIC_ALLOCATION == 1 )\r
        {\r
                StaticTask_t *pxIdleTaskTCBBuffer = NULL;\r
                StackType_t *pxIdleTaskStackBuffer = NULL;\r
+               uint32_t ulIdleTaskStackSize;\r
 \r
                /* The Idle task is created using user provided RAM - obtain the\r
                address of the RAM then create the idle task. */\r
-               vApplicationGetIdleTaskMemory( &pxIdleTaskTCBBuffer, &pxIdleTaskStackBuffer, &usIdleTaskStackSize );\r
-               xReturn = xTaskCreateStatic( prvIdleTask, "IDLE", usIdleTaskStackSize, ( void * ) NULL, ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), &xIdleTaskHandle, pxIdleTaskStackBuffer, pxIdleTaskTCBBuffer ); /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */\r
+               vApplicationGetIdleTaskMemory( &pxIdleTaskTCBBuffer, &pxIdleTaskStackBuffer, &ulIdleTaskStackSize );\r
+               xIdleTaskHandle = xTaskCreateStatic( prvIdleTask, "IDLE", ulIdleTaskStackSize, ( void * ) NULL, ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), pxIdleTaskStackBuffer, pxIdleTaskTCBBuffer ); /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */\r
+\r
+               if( xIdleTaskHandle != NULL )\r
+               {\r
+                       xReturn = pdPASS;\r
+               }\r
+               else\r
+               {\r
+                       xReturn = pdFAIL;\r
+               }\r
        }\r
        #else\r
        {\r
                /* The Idle task is being created using dynamically allocated RAM. */\r
-               xReturn = xTaskCreate( prvIdleTask, "IDLE", usIdleTaskStackSize, ( void * ) NULL, ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), &xIdleTaskHandle ); /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */\r
+               xReturn = xTaskCreate( prvIdleTask, "IDLE", configMINIMAL_STACK_SIZE, ( void * ) NULL, ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), &xIdleTaskHandle ); /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */\r
        }\r
        #endif /* configSUPPORT_STATIC_ALLOCATION */\r
 \r
index 907ac6696694610c6981139f390c000b569be5ad..96d22615d5e2f749a3fc19a7eeafb7c5101b43ee 100644 (file)
@@ -183,7 +183,7 @@ PRIVILEGED_DATA static TaskHandle_t xTimerTaskHandle = NULL;
        following callback function - which enables the application to optionally\r
        provide the memory that will be used by the timer task as the task's stack\r
        and TCB. */\r
-       extern void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint16_t *pusTimerTaskStackSize );\r
+       extern void vApplicationGetTimerTaskMemory( StaticTask_t **ppxTimerTaskTCBBuffer, StackType_t **ppxTimerTaskStackBuffer, uint32_t *pulTimerTaskStackSize );\r
 \r
 #endif\r
 \r
@@ -254,8 +254,6 @@ static void prvInitialiseNewTimer( const char * const pcTimerName, const TickTyp
 BaseType_t xTimerCreateTimerTask( void )\r
 {\r
 BaseType_t xReturn = pdFAIL;\r
-uint16_t usTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;\r
-\r
 \r
        /* This function is called when the scheduler is started if\r
        configUSE_TIMERS is set to 1.  Check that the infrastructure used by the\r
@@ -270,13 +268,19 @@ uint16_t usTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;
                {\r
                        StaticTask_t *pxTimerTaskTCBBuffer = NULL;\r
                        StackType_t *pxTimerTaskStackBuffer = NULL;\r
+                       uint32_t ulTimerTaskStackSize;\r
+\r
+                       vApplicationGetTimerTaskMemory( &pxTimerTaskTCBBuffer, &pxTimerTaskStackBuffer, &ulTimerTaskStackSize );\r
+                       xTimerTaskHandle = xTaskCreateStatic( prvTimerTask, "Tmr Svc", ulTimerTaskStackSize, NULL, ( ( UBaseType_t ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT, pxTimerTaskStackBuffer, pxTimerTaskTCBBuffer );\r
 \r
-                       vApplicationGetTimerTaskMemory( &pxTimerTaskTCBBuffer, &pxTimerTaskStackBuffer, &usTimerTaskStackSize );\r
-                       xReturn = xTaskCreateStatic( prvTimerTask, "Tmr Svc", usTimerTaskStackSize, NULL, ( ( UBaseType_t ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT, &xTimerTaskHandle, pxTimerTaskStackBuffer, pxTimerTaskTCBBuffer );\r
+                       if( xTimerTaskHandle != NULL )\r
+                       {\r
+                               xReturn = pdPASS;\r
+                       }\r
                }\r
                #else\r
                {\r
-                       xReturn = xTaskCreate( prvTimerTask, "Tmr Svc", usTimerTaskStackSize, NULL, ( ( UBaseType_t ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT, &xTimerTaskHandle );\r
+                       xReturn = xTaskCreate( prvTimerTask, "Tmr Svc", configTIMER_TASK_STACK_DEPTH, NULL, ( ( UBaseType_t ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT, &xTimerTaskHandle );\r
                }\r
                #endif /* configSUPPORT_STATIC_ALLOCATION */\r
        }\r