mirror of https://github.com/thesofproject/sof.git
20acc16791
This patch implements the new version of EDF scheduler. This is the first basic implementation, which can be easily extended in the future. Previous implementation had two major flaws: - Tasks could only be preempted based on the interrupt level on which they have been scheduled, so it was limited based on the hardware. - This led to the system not fully utilized, so we could never achieve full EDF functionality. The new implementation uses only one software interrupt and allows for dynamic context switching between different tasks based on the deadline. Also for some cases priority is taken into consideration e.g. for idle and almost idle tasks, which don't have deadline at all and should be executed only if the system is free. All other normal tasks should have the same priority. Task chosen to be run is executed on passive level, so automatically can be preempted by every interrupt. Every task has its own private stack on which current context is saved and restored if needed. Note that main firmware loop is task scheduled with idle priority, so it will be executed only after every other task is completed. Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com> |
||
---|---|---|
.. | ||
cmocka | ||
CMakeLists.txt |