forked from Imagelibrary/rtems
config: Improve EDF SMP scheduler configuration
Use CONFIGURE_MAXIMUM_PROCESSORS to configure the EDF SMP scheduler context. This avoids hard to debug configuration errors resulting in memory corruptions. Close #3815.
This commit is contained in:
@@ -916,8 +916,7 @@ extern rtems_initialization_tasks_table Initialization_tasks[];
|
||||
|
||||
#if !defined(CONFIGURE_SCHEDULER_TABLE_ENTRIES)
|
||||
/** Configure the context needed by the scheduler instance */
|
||||
#define CONFIGURE_SCHEDULER \
|
||||
RTEMS_SCHEDULER_EDF_SMP(dflt, _CONFIGURE_MAXIMUM_PROCESSORS)
|
||||
#define CONFIGURE_SCHEDULER RTEMS_SCHEDULER_EDF_SMP(dflt)
|
||||
|
||||
/** Configure the controls for this scheduler instance */
|
||||
#define CONFIGURE_SCHEDULER_TABLE_ENTRIES \
|
||||
|
||||
@@ -112,13 +112,17 @@
|
||||
#ifdef CONFIGURE_SCHEDULER_EDF_SMP
|
||||
#include <rtems/score/scheduleredfsmp.h>
|
||||
|
||||
#ifndef CONFIGURE_MAXIMUM_PROCESSORS
|
||||
#error "CONFIGURE_MAXIMUM_PROCESSORS must be defined to configure the EDF SMP scheduler"
|
||||
#endif
|
||||
|
||||
#define SCHEDULER_EDF_SMP_CONTEXT_NAME( name ) \
|
||||
SCHEDULER_CONTEXT_NAME( EDF_SMP_ ## name )
|
||||
|
||||
#define RTEMS_SCHEDULER_EDF_SMP( name, max_cpu_count ) \
|
||||
#define RTEMS_SCHEDULER_EDF_SMP( name ) \
|
||||
static struct { \
|
||||
Scheduler_EDF_SMP_Context Base; \
|
||||
Scheduler_EDF_SMP_Ready_queue Ready[ ( max_cpu_count ) + 1 ]; \
|
||||
Scheduler_EDF_SMP_Ready_queue Ready[ CONFIGURE_MAXIMUM_PROCESSORS + 1 ]; \
|
||||
} SCHEDULER_EDF_SMP_CONTEXT_NAME( name )
|
||||
|
||||
#define RTEMS_SCHEDULER_TABLE_EDF_SMP( name, obj_name ) \
|
||||
@@ -132,7 +136,7 @@
|
||||
/* Provided for backward compatibility */
|
||||
|
||||
#define RTEMS_SCHEDULER_CONTEXT_EDF_SMP( name, max_cpu_count ) \
|
||||
RTEMS_SCHEDULER_EDF_SMP( name, max_cpu_count )
|
||||
RTEMS_SCHEDULER_EDF_SMP( name )
|
||||
|
||||
#define RTEMS_SCHEDULER_CONTROL_EDF_SMP( name, obj_name ) \
|
||||
RTEMS_SCHEDULER_TABLE_EDF_SMP( name, obj_name )
|
||||
|
||||
@@ -137,7 +137,7 @@ static void Init(rtems_task_argument arg)
|
||||
|
||||
#include <rtems/scheduler.h>
|
||||
|
||||
RTEMS_SCHEDULER_EDF_SMP(a, CONFIGURE_MAXIMUM_PROCESSORS);
|
||||
RTEMS_SCHEDULER_EDF_SMP(a);
|
||||
|
||||
#define CONFIGURE_SCHEDULER_TABLE_ENTRIES \
|
||||
RTEMS_SCHEDULER_TABLE_EDF_SMP(a, rtems_build_name('E', 'D', 'F', ' '))
|
||||
|
||||
@@ -112,9 +112,9 @@ static void Init(rtems_task_argument arg)
|
||||
|
||||
#include <rtems/scheduler.h>
|
||||
|
||||
RTEMS_SCHEDULER_EDF_SMP(a, CONFIGURE_MAXIMUM_PROCESSORS);
|
||||
RTEMS_SCHEDULER_EDF_SMP(a);
|
||||
|
||||
RTEMS_SCHEDULER_EDF_SMP(b, CONFIGURE_MAXIMUM_PROCESSORS);
|
||||
RTEMS_SCHEDULER_EDF_SMP(b);
|
||||
|
||||
#define CONFIGURE_SCHEDULER_TABLE_ENTRIES \
|
||||
RTEMS_SCHEDULER_TABLE_EDF_SMP(a, MAIN), \
|
||||
|
||||
@@ -439,7 +439,7 @@ static void Init(rtems_task_argument arg)
|
||||
|
||||
RTEMS_SCHEDULER_PRIORITY_SMP(a, 256);
|
||||
|
||||
RTEMS_SCHEDULER_EDF_SMP(b, CONFIGURE_MAXIMUM_PROCESSORS);
|
||||
RTEMS_SCHEDULER_EDF_SMP(b);
|
||||
|
||||
RTEMS_SCHEDULER_SIMPLE_SMP(c);
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ const char rtems_test_name[] = "SMPSCHEDULER 7";
|
||||
|
||||
#include <rtems/scheduler.h>
|
||||
|
||||
RTEMS_SCHEDULER_EDF_SMP(a, CONFIGURE_MAXIMUM_PROCESSORS);
|
||||
RTEMS_SCHEDULER_EDF_SMP(a);
|
||||
|
||||
#define CONFIGURE_SCHEDULER_TABLE_ENTRIES \
|
||||
RTEMS_SCHEDULER_TABLE_EDF_SMP( a, rtems_build_name('T', 'E', 'S', 'T'))
|
||||
|
||||
@@ -597,9 +597,9 @@ static void Init(rtems_task_argument arg)
|
||||
|
||||
#include <rtems/scheduler.h>
|
||||
|
||||
RTEMS_SCHEDULER_EDF_SMP(a, CONFIGURE_MAXIMUM_PROCESSORS);
|
||||
RTEMS_SCHEDULER_EDF_SMP(a);
|
||||
|
||||
RTEMS_SCHEDULER_EDF_SMP(b, CONFIGURE_MAXIMUM_PROCESSORS);
|
||||
RTEMS_SCHEDULER_EDF_SMP(b);
|
||||
|
||||
#define CONFIGURE_SCHEDULER_TABLE_ENTRIES \
|
||||
RTEMS_SCHEDULER_TABLE_EDF_SMP(a, SCHED_A), \
|
||||
|
||||
Reference in New Issue
Block a user