diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-04-09 15:07:54 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-04-15 10:41:44 +0200 |
commit | c5831a3f9af11228dbdaabaf01f69d37e55684ef (patch) | |
tree | e9ddedd942f3f31d239820dfc4dbcef4cde0b09a /cpukit/sapi/include/confdefs.h | |
parent | rtems: Add task get/set scheduler (diff) | |
download | rtems-c5831a3f9af11228dbdaabaf01f69d37e55684ef.tar.bz2 |
score: Add clustered/partitioned scheduling
Clustered/partitioned scheduling helps to control the worst-case
latencies in the system. The goal is to reduce the amount of shared
state in the system and thus prevention of lock contention. Modern
multi-processor systems tend to have several layers of data and
instruction caches. With clustered/partitioned scheduling it is
possible to honour the cache topology of a system and thus avoid
expensive cache synchronization traffic.
We have clustered scheduling in case the set of processors of a system
is partitioned into non-empty pairwise-disjoint subsets. These subsets
are called clusters. Clusters with a cardinality of one are partitions.
Each cluster is owned by exactly one scheduler instance.
Diffstat (limited to 'cpukit/sapi/include/confdefs.h')
-rw-r--r-- | cpukit/sapi/include/confdefs.h | 113 |
1 files changed, 113 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) |