This patch set addresses several bugs related to SMP schedulers: * https://devel.rtems.org/ticket/4531
* https://devel.rtems.org/ticket/4532 * https://devel.rtems.org/ticket/4534 * https://devel.rtems.org/ticket/4544 * https://devel.rtems.org/ticket/4545 Tests for scenarios of this patch set are in the new validation test suite which will be sent for review later. Sebastian Huber (27): score: Simplify _Scheduler_Generic_block() score: Add red-black tree append/prepend score: Rename _Scheduler_Set_idle_thread() score: Not set CPU in _Scheduler_Use_idle_thread() score: Change _Scheduler_Try_to_schedule_node() score: Simplify _Scheduler_Exchange_idle_thread() score: Add missing idle thread releases score: Add missing idle thread exchanges score: Scheduler insert after move score: Remove return value from enqueue scheduled score: Use extract from scheduled callbacks score: Rework affine ready queue handling score: Optimize SMP EDF move to ready operation score: Add SMP scheduler idle exchange callback score: Add SMP scheduler make/clean sticky score: Rework idle handling in SMP schedulers score: Add node to insert to Chain_Node_order score: Fix SMP EDF priority group ordering score: Simplify _Scheduler_SMP_Yield() score: Move _Scheduler_Block_node() score: Move _Scheduler_Unblock_node() score: Remove victim thread from CPU allocation score: _Scheduler_SMP_Schedule_highest_ready() score: Rework ask for help requests score: Fix assertion in SMP scheduler framework rtems: Fix rtems_scheduler_remove_processor() score: Restrict affinity for EDF SMP scheduler cpukit/include/rtems/score/chainimpl.h | 11 +- cpukit/include/rtems/score/mrspimpl.h | 19 +- cpukit/include/rtems/score/rbtreeimpl.h | 26 + cpukit/include/rtems/score/scheduler.h | 54 + cpukit/include/rtems/score/scheduleredfsmp.h | 45 +- cpukit/include/rtems/score/schedulerimpl.h | 441 ++----- .../include/rtems/score/schedulernodeimpl.h | 21 + .../score/schedulerpriorityaffinitysmp.h | 32 + .../rtems/score/schedulerprioritysmp.h | 33 + .../rtems/score/schedulerprioritysmpimpl.h | 35 + .../include/rtems/score/schedulersimpleimpl.h | 13 +- .../include/rtems/score/schedulersimplesmp.h | 32 + cpukit/include/rtems/score/schedulersmp.h | 9 - cpukit/include/rtems/score/schedulersmpimpl.h | 1032 ++++++++++------- .../include/rtems/score/schedulerstrongapa.h | 62 + cpukit/include/rtems/score/thread.h | 20 +- cpukit/include/rtems/score/threadimpl.h | 54 +- cpukit/rtems/src/schedulerremoveprocessor.c | 50 +- cpukit/score/src/coremsginsert.c | 6 +- cpukit/score/src/rbtreeappend.c | 58 + cpukit/score/src/rbtreeprepend.c | 58 + .../src/schedulerdefaultmakecleansticky.c | 52 + cpukit/score/src/scheduleredfsmp.c | 346 ++++-- .../score/src/schedulerpriorityaffinitysmp.c | 89 +- cpukit/score/src/schedulerprioritysmp.c | 73 +- cpukit/score/src/schedulersimplesmp.c | 96 +- cpukit/score/src/schedulersmp.c | 29 +- cpukit/score/src/schedulerstrongapa.c | 162 ++- cpukit/score/src/threadchangepriority.c | 132 ++- cpukit/score/src/threaddispatch.c | 2 +- cpukit/score/src/threadqenqueue.c | 6 +- spec/build/cpukit/librtemscpu.yml | 2 + spec/build/cpukit/objsmp.yml | 1 + testsuites/sptests/spchain/init.c | 8 +- 34 files changed, 2115 insertions(+), 994 deletions(-) create mode 100644 cpukit/score/src/rbtreeappend.c create mode 100644 cpukit/score/src/rbtreeprepend.c create mode 100644 cpukit/score/src/schedulerdefaultmakecleansticky.c -- 2.26.2 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel