Rework thread priority management and EDF scheduler

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Jun 17 10:51:37 UTC 2016


The thread priority is manifest in two independent areas.  One area is
the user visible thread priority along with a potential thread queue.
The other is the scheduler.  Currently, a thread priority update via
_Thread_Change_priority() first updates the user visble thread priority
and the thread queue, then the scheduler is notified if necessary.  The
priority is passed to the scheduler via a local variable.  A generation
counter ensures that the scheduler discards out-of-date priorities.

This use of a local variable ties the update in these two areas close
together.  For later enhancements and the OMIP locking protocol
implementation we need more flexibility.  This patch set modifies the thread
priority management and finally adds a thread priority information block to
Scheduler_Node.

As a side-effect the EDF scheduler is reworked.  In a follow up patch the
Priority_Control will change to a 64-bit integer, so that uptimes of more than
49days are supported.


More information about the devel mailing list