forked from espressif/esp-idf
Merge branch 'feature/freertos_restore_single_core_task_selection_algorithm' into 'master'
FreeRTOS(IDF): Restore vanilla task selection algorithm if building for single core with optimized selection is disabled See merge request espressif/esp-idf!21001
This commit is contained in:
@@ -98,6 +98,14 @@
|
|||||||
#error configMAX_PRIORITIES must be defined to be greater than or equal to 1.
|
#error configMAX_PRIORITIES must be defined to be greater than or equal to 1.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef configNUM_CORES
|
||||||
|
#error Missing definition: configNUM_CORES must be defined in FreeRTOSConfig.h
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ( ( configNUM_CORES != 1 ) && ( configNUM_CORES != 2 ) )
|
||||||
|
#error configNUM_CORES must be defined to either 1 or 2.
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef configUSE_PREEMPTION
|
#ifndef configUSE_PREEMPTION
|
||||||
#error Missing definition: configUSE_PREEMPTION must be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
|
#error Missing definition: configUSE_PREEMPTION must be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
|
||||||
#endif
|
#endif
|
||||||
@@ -972,6 +980,10 @@
|
|||||||
#error configUSE_MUTEXES must be set to 1 to use recursive mutexes
|
#error configUSE_MUTEXES must be set to 1 to use recursive mutexes
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if ( ( configNUM_CORES > 1 ) && ( configUSE_PORT_OPTIMISED_TASK_SELECTION == 1 ) )
|
||||||
|
#error configUSE_PORT_OPTIMISED_TASK_SELECTION is not supported if configNUM_CORES > 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef configINITIAL_TICK_COUNT
|
#ifndef configINITIAL_TICK_COUNT
|
||||||
#define configINITIAL_TICK_COUNT 0
|
#define configINITIAL_TICK_COUNT 0
|
||||||
#endif
|
#endif
|
||||||
|
@@ -145,9 +145,9 @@
|
|||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM
|
#if ( configNUM_CORES > 1 )
|
||||||
#define taskSELECT_HIGHEST_PRIORITY_TASK() taskSelectHighestPriorityTaskSMP()
|
#define taskSELECT_HIGHEST_PRIORITY_TASK() taskSelectHighestPriorityTaskSMP()
|
||||||
#else //ESP_PLATFORM
|
#else /* configNUM_CORES > 1 */
|
||||||
#define taskSELECT_HIGHEST_PRIORITY_TASK() \
|
#define taskSELECT_HIGHEST_PRIORITY_TASK() \
|
||||||
{ \
|
{ \
|
||||||
UBaseType_t uxTopPriority = uxTopReadyPriority; \
|
UBaseType_t uxTopPriority = uxTopReadyPriority; \
|
||||||
@@ -161,10 +161,10 @@
|
|||||||
\
|
\
|
||||||
/* listGET_OWNER_OF_NEXT_ENTRY indexes through the list, so the tasks of \
|
/* listGET_OWNER_OF_NEXT_ENTRY indexes through the list, so the tasks of \
|
||||||
* the same priority get an equal share of the processor time. */ \
|
* the same priority get an equal share of the processor time. */ \
|
||||||
listGET_OWNER_OF_NEXT_ENTRY( pxCurrentTCB[ xPortGetCoreID() ], &( pxReadyTasksLists[ uxTopPriority ] ) ); \
|
listGET_OWNER_OF_NEXT_ENTRY( pxCurrentTCB[ 0 ], &( pxReadyTasksLists[ uxTopPriority ] ) ); \
|
||||||
uxTopReadyPriority = uxTopPriority; \
|
uxTopReadyPriority = uxTopPriority; \
|
||||||
} /* taskSELECT_HIGHEST_PRIORITY_TASK */
|
} /* taskSELECT_HIGHEST_PRIORITY_TASK */
|
||||||
#endif //ESP_PLATFORM
|
#endif /* configNUM_CORES > 1 */
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
@@ -192,7 +192,7 @@
|
|||||||
/* Find the highest priority list that contains ready tasks. */ \
|
/* Find the highest priority list that contains ready tasks. */ \
|
||||||
portGET_HIGHEST_PRIORITY( uxTopPriority, uxTopReadyPriority ); \
|
portGET_HIGHEST_PRIORITY( uxTopPriority, uxTopReadyPriority ); \
|
||||||
configASSERT( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ uxTopPriority ] ) ) > 0 ); \
|
configASSERT( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ uxTopPriority ] ) ) > 0 ); \
|
||||||
listGET_OWNER_OF_NEXT_ENTRY( pxCurrentTCB[ xPortGetCoreID() ], &( pxReadyTasksLists[ uxTopPriority ] ) ); \
|
listGET_OWNER_OF_NEXT_ENTRY( pxCurrentTCB[ 0 ], &( pxReadyTasksLists[ uxTopPriority ] ) ); \
|
||||||
} /* taskSELECT_HIGHEST_PRIORITY_TASK() */
|
} /* taskSELECT_HIGHEST_PRIORITY_TASK() */
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
@@ -3509,8 +3509,7 @@ BaseType_t xTaskIncrementTick( void )
|
|||||||
#endif /* configUSE_APPLICATION_TASK_TAG */
|
#endif /* configUSE_APPLICATION_TASK_TAG */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM
|
#if ( configNUM_CORES > 1 )
|
||||||
#if ( configUSE_PORT_OPTIMISED_TASK_SELECTION == 0 )
|
|
||||||
static void taskSelectHighestPriorityTaskSMP( void )
|
static void taskSelectHighestPriorityTaskSMP( void )
|
||||||
{
|
{
|
||||||
/* This function is called from a critical section. So some optimizations are made */
|
/* This function is called from a critical section. So some optimizations are made */
|
||||||
@@ -3596,8 +3595,7 @@ get_next_task:
|
|||||||
|
|
||||||
assert( xTaskScheduled == pdTRUE ); /* At this point, a task MUST have been scheduled */
|
assert( xTaskScheduled == pdTRUE ); /* At this point, a task MUST have been scheduled */
|
||||||
}
|
}
|
||||||
#endif /* configUSE_PORT_OPTIMISED_TASK_SELECTION */
|
#endif /* configNUM_CORES > 1 */
|
||||||
#endif //ESP_PLATFORM
|
|
||||||
|
|
||||||
void vTaskSwitchContext( void )
|
void vTaskSwitchContext( void )
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user