[PATCH 00/27] Fix several SMP related scheduler bugs

Sebastian Huber sebastian.huber at embedded-brains.de
Mon Nov 15 17:12:32 UTC 2021


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



More information about the devel mailing list