diff options
Diffstat (limited to 'cpukit/sapi/include')
-rw-r--r-- | cpukit/sapi/include/confdefs.h | 113 | ||||
-rw-r--r-- | cpukit/sapi/include/rtems/scheduler.h | 23 |
2 files changed, 136 insertions, 0 deletions
diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h index 5ec0cf2516..c8a9d0e3a4 100644 --- a/cpukit/sapi/include/confdefs.h +++ b/cpukit/sapi/include/confdefs.h @@ -820,6 +820,119 @@ const rtems_libio_helper rtems_fs_init_helper = #if defined(RTEMS_SMP) const size_t _Scheduler_Count = RTEMS_ARRAY_SIZE( _Scheduler_Table ); + + const Scheduler_Assignment _Scheduler_Assignments[] = { + #if defined(CONFIGURE_SMP_SCHEDULER_ASSIGNMENTS) + CONFIGURE_SMP_SCHEDULER_ASSIGNMENTS + #else + #define CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT \ + RTEMS_SCHEDULER_ASSIGN( \ + 0, \ + RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL \ + ) + CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 2 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 3 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 4 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 5 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 6 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 7 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 8 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 9 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 10 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 11 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 12 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 13 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 14 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 15 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 16 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 17 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 18 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 19 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 20 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 21 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 22 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 23 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 24 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 25 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 26 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 27 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 28 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 29 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 30 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 31 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #if CONFIGURE_SMP_MAXIMUM_PROCESSORS >= 32 + , CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + #undef CONFIGURE_SMP_SCHEDULER_ASSIGN_OPT + #endif + }; + + RTEMS_STATIC_ASSERT( + CONFIGURE_SMP_MAXIMUM_PROCESSORS + == RTEMS_ARRAY_SIZE( _Scheduler_Assignments ), + _Scheduler_Assignments + ); #endif #if defined(CONFIGURE_SCHEDULER_EDF) diff --git a/cpukit/sapi/include/rtems/scheduler.h b/cpukit/sapi/include/rtems/scheduler.h index 06824e9370..ce5455925f 100644 --- a/cpukit/sapi/include/rtems/scheduler.h +++ b/cpukit/sapi/include/rtems/scheduler.h @@ -26,6 +26,29 @@ #define RTEMS_SCHEDULER_CONTEXT_NAME( name ) \ _Configuration_Scheduler_ ## name +#if defined(RTEMS_SMP) + /* This object doesn't exist and indicates a configuration error */ + extern const Scheduler_Control RTEMS_SCHEDULER_INVALID_INDEX; + + #define RTEMS_SCHEDULER_ASSIGN_DEFAULT \ + SCHEDULER_ASSIGN_DEFAULT + + #define RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL \ + SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL + + #define RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY \ + SCHEDULER_ASSIGN_PROCESSOR_MANDATORY + + #define RTEMS_SCHEDULER_ASSIGN( index, attr ) \ + { \ + ( index ) < RTEMS_ARRAY_SIZE( _Scheduler_Table ) ? \ + &_Scheduler_Table[ ( index ) ] : &RTEMS_SCHEDULER_INVALID_INDEX, \ + ( attr ) \ + } + + #define RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER { NULL, 0 } +#endif + /* * This file should be only included in the context of <rtems/confdefs.h>. * Define the scheduler configuration macros only in case the corresponding |