]> git.sur5r.net Git - freertos/commitdiff
Minor tidy ups that don't effect code generation, plus:
authorrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Sun, 5 Jan 2014 20:12:20 +0000 (20:12 +0000)
committerrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Sun, 5 Jan 2014 20:12:20 +0000 (20:12 +0000)
When a task is unblocked the need for a context switch is only signalled if the unblocked task has a priority higher than the currently running task, instead of higher than or equal to the priority of the currently running task.

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

FreeRTOS/Demo/WIN32-MSVC/FreeRTOSConfig.h
FreeRTOS/Demo/WIN32-MingW/FreeRTOSConfig.h
FreeRTOS/Source/include/FreeRTOS.h
FreeRTOS/Source/portable/GCC/ARM7_AT91SAM7S/portISR.c
FreeRTOS/Source/portable/GCC/ARM_CM3/port.c
FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c
FreeRTOS/Source/portable/IAR/ARM_CM3/port.c
FreeRTOS/Source/portable/IAR/ARM_CM4F/port.c
FreeRTOS/Source/portable/RVDS/ARM_CM3/port.c
FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c
FreeRTOS/Source/tasks.c

index b91f6619b76963444865da63450c0b14ca4a5c9d..93bc17c13baa2d0ca9e3b7bc24e8cfdfc392cccc 100644 (file)
  * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.\r
  *----------------------------------------------------------*/\r
 \r
-#define configUSE_PREEMPTION                   1\r
-#define configUSE_IDLE_HOOK                            1\r
-#define configUSE_TICK_HOOK                            1\r
-#define configTICK_RATE_HZ                             ( 1000 ) /* In this non-real time simulated environment the tick frequency has to be at least a multiple of the Win32 tick frequency, and therefore very slow. */\r
-#define configMINIMAL_STACK_SIZE               ( ( unsigned short ) 50 ) /* In this simulated case, the stack only has to hold one small structure as the real stack is part of the win32 thread. */\r
-#define configTOTAL_HEAP_SIZE                  ( ( size_t ) ( 20 * 1024 ) )\r
-#define configMAX_TASK_NAME_LEN                        ( 12 )\r
-#define configUSE_TRACE_FACILITY               1\r
-#define configUSE_16_BIT_TICKS                 0\r
-#define configIDLE_SHOULD_YIELD                        1\r
-#define configUSE_MUTEXES                              1\r
-#define configCHECK_FOR_STACK_OVERFLOW 0\r
-#define configUSE_RECURSIVE_MUTEXES            1\r
-#define configQUEUE_REGISTRY_SIZE              20\r
-#define configUSE_MALLOC_FAILED_HOOK   1\r
-#define configUSE_APPLICATION_TASK_TAG 1\r
-#define configUSE_COUNTING_SEMAPHORES  1\r
-#define configUSE_ALTERNATIVE_API              1\r
-#define configUSE_QUEUE_SETS                   1\r
-\r
-#define configUSE_TIMERS                               1\r
-#define configTIMER_TASK_PRIORITY              2\r
-#define configTIMER_QUEUE_LENGTH               20\r
-#define configTIMER_TASK_STACK_DEPTH   ( configMINIMAL_STACK_SIZE * 2 )\r
+#define configUSE_PREEMPTION                                   1\r
+#define configUSE_PORT_OPTIMISED_TASK_SELECTION        1\r
+#define configUSE_IDLE_HOOK                                            1\r
+#define configUSE_TICK_HOOK                                            1\r
+#define configTICK_RATE_HZ                                             ( 1000 ) /* In this non-real time simulated environment the tick frequency has to be at least a multiple of the Win32 tick frequency, and therefore very slow. */\r
+#define configMINIMAL_STACK_SIZE                               ( ( unsigned short ) 50 ) /* In this simulated case, the stack only has to hold one small structure as the real stack is part of the win32 thread. */\r
+#define configTOTAL_HEAP_SIZE                                  ( ( size_t ) ( 20 * 1024 ) )\r
+#define configMAX_TASK_NAME_LEN                                        ( 12 )\r
+#define configUSE_TRACE_FACILITY                               1\r
+#define configUSE_16_BIT_TICKS                                 0\r
+#define configIDLE_SHOULD_YIELD                                        1\r
+#define configUSE_MUTEXES                                              1\r
+#define configCHECK_FOR_STACK_OVERFLOW                 0\r
+#define configUSE_RECURSIVE_MUTEXES                            1\r
+#define configQUEUE_REGISTRY_SIZE                              20\r
+#define configUSE_MALLOC_FAILED_HOOK                   1\r
+#define configUSE_APPLICATION_TASK_TAG                 1\r
+#define configUSE_COUNTING_SEMAPHORES                  1\r
+#define configUSE_ALTERNATIVE_API                              1\r
+#define configUSE_QUEUE_SETS                                   1\r
+\r
+/* Software timer related configuration options. */\r
+#define configUSE_TIMERS                                               1\r
+#define configTIMER_TASK_PRIORITY                              2\r
+#define configTIMER_QUEUE_LENGTH                               20\r
+#define configTIMER_TASK_STACK_DEPTH                   ( configMINIMAL_STACK_SIZE * 2 )\r
 \r
 #define configMAX_PRIORITIES                   ( 7 )\r
 \r
-/* Run time stats gathering definitions. */\r
-unsigned long ulGetRunTimeCounterValue( void );\r
-void vConfigureTimerForRunTimeStats( void );\r
+/* Run time stats gathering configuration options. */\r
+unsigned long ulGetRunTimeCounterValue( void ); /* Prototype of function that returns run time counter. */\r
+void vConfigureTimerForRunTimeStats( void );   /* Prototype of function that initialises the run time counter. */\r
 #define configGENERATE_RUN_TIME_STATS  1\r
 #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vConfigureTimerForRunTimeStats()\r
 #define portGET_RUN_TIME_COUNTER_VALUE() ulGetRunTimeCounterValue()\r
 \r
-/* Co-routine definitions. */\r
+/* Co-routine related configuration options. */\r
 #define configUSE_CO_ROUTINES          1\r
 #define configMAX_CO_ROUTINE_PRIORITIES ( 2 )\r
 \r
@@ -122,7 +124,8 @@ FreeRTOS/Source/tasks.c for limitations. */
 #define configUSE_STATS_FORMATTING_FUNCTIONS   1\r
 \r
 /* Set the following definitions to 1 to include the API function, or zero\r
-to exclude the API function. */\r
+to exclude the API function.  In most cases the linker will remove unused\r
+functions anyway. */\r
 #define INCLUDE_vTaskPrioritySet                               1\r
 #define INCLUDE_uxTaskPriorityGet                              1\r
 #define INCLUDE_vTaskDelete                                            1\r
@@ -139,15 +142,11 @@ to exclude the API function. */
 #define INCLUDE_xSemaphoreGetMutexHolder               1\r
 #define INCLUDE_xTimerPendFunctionCallFromISR  1\r
 \r
-/* Standard assert semantics. */\r
+/* It is a good idea to define configASSERT() while developing.  configASSERT()\r
+uses the same semantics as the standard C assert() macro. */\r
 extern void vAssertCalled( unsigned long ulLine, const char * const pcFileName );\r
 #define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __LINE__, __FILE__ )\r
 \r
-/* configUSE_PORT_OPTIMISED_TASK_SELECTION is only available in the MSVC\r
-version of the Win32 simulator projects.  It will be ignored in the GCC\r
-version. */\r
-#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1\r
-\r
 /* Include the FreeRTOS+Trace FreeRTOS trace macro definitions. */\r
 #include "trcKernelPort.h"\r
 \r
index 0e389bfb823326223c6ec58ee66cdebef9d86188..ddf9b1bf828910416e8daec6dc8b7f727bb26b73 100644 (file)
@@ -67,8 +67,6 @@
 #ifndef FREERTOS_CONFIG_H\r
 #define FREERTOS_CONFIG_H\r
 \r
-#include <stdint.h>\r
-\r
 /*-----------------------------------------------------------\r
  * Application specific definitions.\r
  *\r
  * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.\r
  *----------------------------------------------------------*/\r
 \r
-#define configUSE_PREEMPTION                   1\r
-#define configUSE_IDLE_HOOK                            1\r
-#define configUSE_TICK_HOOK                            1\r
-#define configTICK_RATE_HZ                             ( 1000 ) /* In this non-real time simulated environment the tick frequency has to be at least a multiple of the Win32 tick frequency, and therefore very slow. */\r
-#define configMINIMAL_STACK_SIZE               ( ( unsigned short ) 50 ) /* In this simulated case, the stack only has to hold one small structure as the real stack is part of the win32 thread. */\r
-#define configTOTAL_HEAP_SIZE                  ( ( size_t ) ( 20 * 1024 ) )\r
-#define configMAX_TASK_NAME_LEN                        ( 12 )\r
-#define configUSE_TRACE_FACILITY               1\r
-#define configUSE_16_BIT_TICKS                 0\r
-#define configIDLE_SHOULD_YIELD                        1\r
-#define configUSE_MUTEXES                              1\r
-#define configCHECK_FOR_STACK_OVERFLOW 0\r
-#define configUSE_RECURSIVE_MUTEXES            1\r
-#define configQUEUE_REGISTRY_SIZE              20\r
-#define configUSE_MALLOC_FAILED_HOOK   1\r
-#define configUSE_APPLICATION_TASK_TAG 1\r
-#define configUSE_COUNTING_SEMAPHORES  1\r
-#define configUSE_ALTERNATIVE_API              1\r
-#define configUSE_QUEUE_SETS                   1\r
-\r
-#define configUSE_TIMERS                               1\r
-#define configTIMER_TASK_PRIORITY              ( configMAX_PRIORITIES - 1 )\r
-#define configTIMER_QUEUE_LENGTH               20\r
-#define configTIMER_TASK_STACK_DEPTH   ( configMINIMAL_STACK_SIZE * 2 )\r
-\r
-#define configMAX_PRIORITIES                   ( 8 )\r
-\r
-/* Run time stats gathering definitions. */\r
-unsigned long ulGetRunTimeCounterValue( void );\r
-void vConfigureTimerForRunTimeStats( void );\r
+#define configUSE_PREEMPTION                                   1\r
+#define configUSE_PORT_OPTIMISED_TASK_SELECTION        1\r
+#define configUSE_IDLE_HOOK                                            1\r
+#define configUSE_TICK_HOOK                                            1\r
+#define configTICK_RATE_HZ                                             ( 1000 ) /* In this non-real time simulated environment the tick frequency has to be at least a multiple of the Win32 tick frequency, and therefore very slow. */\r
+#define configMINIMAL_STACK_SIZE                               ( ( unsigned short ) 50 ) /* In this simulated case, the stack only has to hold one small structure as the real stack is part of the win32 thread. */\r
+#define configTOTAL_HEAP_SIZE                                  ( ( size_t ) ( 20 * 1024 ) )\r
+#define configMAX_TASK_NAME_LEN                                        ( 12 )\r
+#define configUSE_TRACE_FACILITY                               1\r
+#define configUSE_16_BIT_TICKS                                 0\r
+#define configIDLE_SHOULD_YIELD                                        1\r
+#define configUSE_MUTEXES                                              1\r
+#define configCHECK_FOR_STACK_OVERFLOW                 0\r
+#define configUSE_RECURSIVE_MUTEXES                            1\r
+#define configQUEUE_REGISTRY_SIZE                              20\r
+#define configUSE_MALLOC_FAILED_HOOK                   1\r
+#define configUSE_APPLICATION_TASK_TAG                 1\r
+#define configUSE_COUNTING_SEMAPHORES                  1\r
+#define configUSE_ALTERNATIVE_API                              1\r
+#define configUSE_QUEUE_SETS                                   1\r
+\r
+/* Software timer related configuration options. */\r
+#define configUSE_TIMERS                                               1\r
+#define configTIMER_TASK_PRIORITY                              ( configMAX_PRIORITIES - 1 )\r
+#define configTIMER_QUEUE_LENGTH                               20\r
+#define configTIMER_TASK_STACK_DEPTH                   ( configMINIMAL_STACK_SIZE * 2 )\r
+\r
+#define configMAX_PRIORITIES                                   ( 8 )\r
+\r
+/* Run time stats gathering configuration options. */\r
+unsigned long ulGetRunTimeCounterValue( void ); /* Prototype of function that returns run time counter. */\r
+void vConfigureTimerForRunTimeStats( void );   /* Prototype of function that initialises the run time counter. */\r
 #define configGENERATE_RUN_TIME_STATS  1\r
 #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vConfigureTimerForRunTimeStats()\r
 #define portGET_RUN_TIME_COUNTER_VALUE() ulGetRunTimeCounterValue()\r
 \r
-/* Co-routine definitions. */\r
+/* Co-routine related configuration options. */\r
 #define configUSE_CO_ROUTINES          1\r
 #define configMAX_CO_ROUTINE_PRIORITIES ( 2 )\r
 \r
-/* Set the following definitions to 1 to include the API function, or zero\r
-to exclude the API function. */\r
+/* This demo makes use of one or more example stats formatting functions.  These\r
+format the raw data provided by the uxTaskGetSystemState() function in to human\r
+readable ASCII form.  See the notes in the implementation of vTaskList() within\r
+FreeRTOS/Source/tasks.c for limitations. */\r
+#define configUSE_STATS_FORMATTING_FUNCTIONS   1\r
 \r
+/* Set the following definitions to 1 to include the API function, or zero\r
+to exclude the API function.  In most cases the linker will remove unused\r
+functions anyway. */\r
 #define INCLUDE_vTaskPrioritySet                               1\r
 #define INCLUDE_uxTaskPriorityGet                              1\r
 #define INCLUDE_vTaskDelete                                            1\r
@@ -136,16 +142,12 @@ to exclude the API function. */
 #define INCLUDE_xSemaphoreGetMutexHolder               1\r
 #define INCLUDE_xTimerPendFunctionCallFromISR  1\r
 \r
-/* Standard assert semantics. */\r
+/* It is a good idea to define configASSERT() while developing.  configASSERT()\r
+uses the same semantics as the standard C assert() macro. */\r
 extern void vAssertCalled( unsigned long ulLine, const char * const pcFileName );\r
 #define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __LINE__, __FILE__ )\r
 \r
-/* configUSE_PORT_OPTIMISED_TASK_SELECTION is only available in the MSVC\r
-version of the Win32 simulator projects.  It will be ignored in the GCC\r
-version. */\r
-#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1\r
 \r
 /* Include the FreeRTOS+Trace FreeRTOS trace macro definitions. */\r
 #include "trcKernelPort.h"\r
-\r
 #endif /* FREERTOS_CONFIG_H */\r
index 4515e4d755469bafaf6f72189a7d94da06555444..bfe731eee3be917fa68b48211827bc7bb6bb31cd 100644 (file)
@@ -200,10 +200,6 @@ is included as it is used by the port layer. */
        #define configUSE_TIMERS 0\r
 #endif\r
 \r
-#ifndef configUSE_EVENT_GROUPS\r
-       #define configUSE_EVENT_GROUPS 0\r
-#endif\r
-\r
 #ifndef configUSE_COUNTING_SEMAPHORES\r
        #define configUSE_COUNTING_SEMAPHORES 0\r
 #endif\r
@@ -706,7 +702,7 @@ is included as it is used by the port layer. */
 \r
 /* Backward compatibility within the scheduler code only - these definitions\r
 are not really required but are included for completeness. */\r
-#define trmTIMER_CALLBACK TimerCallbackFunction_t\r
+#define tmrTIMER_CALLBACK TimerCallbackFunction_t\r
 #define pdTASK_CODE TaskFunction_t\r
 #define xListItem ListItem_t\r
 #define xList List_t\r
index 798bebed437d328f24a2faf0367c7fa8263974f2..bb71c607f51b4438ea7dea5753a7554d2472d7c7 100644 (file)
@@ -181,7 +181,7 @@ void vPortYieldProcessor( void )
                }\r
 \r
                /* End the interrupt in the AIC. */\r
-               AT91C_BASE_AIC->AIC_EOICR = AT91C_BASE_PITC->PITC_PIVR;;\r
+               AT91C_BASE_AIC->AIC_EOICR = AT91C_BASE_PITC->PITC_PIVR;\r
 \r
                portRESTORE_CONTEXT();\r
        }\r
index c1d32c1126d7a231f5650760e99160dceb52158f..fb3a84fad069faba6e16e060449e559ab43cdc1d 100644 (file)
@@ -644,7 +644,7 @@ __attribute__(( weak )) void vPortSetupTimerInterrupt( void )
        #endif /* configUSE_TICKLESS_IDLE */\r
 \r
        /* Configure SysTick to interrupt at the requested rate. */\r
-       portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;;\r
+       portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;\r
        portNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT );\r
 }\r
 /*-----------------------------------------------------------*/\r
index 760a343b04d5087557fe8ca8eb29d4ad5c11f8f4..3edc640d84f4bfb1529839c437281df73ad3d02e 100644 (file)
@@ -687,7 +687,7 @@ __attribute__(( weak )) void vPortSetupTimerInterrupt( void )
        #endif /* configUSE_TICKLESS_IDLE */\r
 \r
        /* Configure SysTick to interrupt at the requested rate. */\r
-       portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;;\r
+       portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;\r
        portNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT );\r
 }\r
 /*-----------------------------------------------------------*/\r
index 84aa08f86cba787efe5899041ced70ba61d5be1f..23c43fd01bdd5c6c5c0717895dd2cad749f4b5ac 100644 (file)
@@ -526,7 +526,7 @@ __weak void vPortSetupTimerInterrupt( void )
        #endif /* configUSE_TICKLESS_IDLE */\r
 \r
        /* Configure SysTick to interrupt at the requested rate. */\r
-       portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;;\r
+       portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;\r
        portNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT );\r
 }\r
 /*-----------------------------------------------------------*/\r
index f2d9e3db0b688e7f3def91a888c349c691174373..9809d94b9fe700f65c24ec1084628f0551ad3349 100644 (file)
@@ -552,7 +552,7 @@ __weak void vPortSetupTimerInterrupt( void )
        #endif /* configUSE_TICKLESS_IDLE */\r
 \r
        /* Configure SysTick to interrupt at the requested rate. */\r
-       portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;;\r
+       portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;\r
        portNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT );\r
 }\r
 /*-----------------------------------------------------------*/\r
index 25515cb0969c78b136cd63cba32f7b164c7871f5..316a1f7ab5066fab7e1b2a2bd2a696f69357ade4 100644 (file)
@@ -610,7 +610,7 @@ void xPortSysTickHandler( void )
                #endif /* configUSE_TICKLESS_IDLE */\r
 \r
                /* Configure SysTick to interrupt at the requested rate. */\r
-               portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;;\r
+               portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;\r
                portNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT );\r
        }\r
 \r
index 3d12d98e2b1c5f1049f0f89aa0c77d7c3c20b994..3d53d3badff60945dd137a84bbb648e2f1ec0148 100644 (file)
@@ -680,7 +680,7 @@ void xPortSysTickHandler( void )
                #endif /* configUSE_TICKLESS_IDLE */\r
 \r
                /* Configure SysTick to interrupt at the requested rate. */\r
-               portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;;\r
+               portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;\r
                portNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT );\r
        }\r
 \r
index 25cda7fdc798c934877c022d5737512fb856e082..91df4ec304bc882670504459feaf6ee26ddf6c9f 100644 (file)
@@ -2324,12 +2324,12 @@ BaseType_t xReturn;
        }\r
        else\r
        {\r
-               /* We cannot access the delayed or ready lists, so will hold this\r
-               task pending until the scheduler is resumed. */\r
+               /* The delayed and ready lists cannot be accessed, so hold this task\r
+               pending until the scheduler is resumed. */\r
                vListInsertEnd( &( xPendingReadyList ), &( pxUnblockedTCB->xEventListItem ) );\r
        }\r
 \r
-       if( pxUnblockedTCB->uxPriority >= pxCurrentTCB->uxPriority )\r
+       if( pxUnblockedTCB->uxPriority > pxCurrentTCB->uxPriority )\r
        {\r
                /* Return true if the task removed from the event list has\r
                a higher priority than the calling task.  This allows\r
@@ -2379,7 +2379,7 @@ BaseType_t xReturn;
                vListInsertEnd( &( xPendingReadyList ), pxEventListItem );\r
        }\r
 \r
-       if( pxUnblockedTCB->uxPriority >= pxCurrentTCB->uxPriority )\r
+       if( pxUnblockedTCB->uxPriority > pxCurrentTCB->uxPriority )\r
        {\r
                /* Return true if the task removed from the event list has\r
                a higher priority than the calling task.  This allows\r