diff options
author | Joshua Bakita <jbakita@cs.unc.edu> | 2020-05-17 16:28:20 -0400 |
---|---|---|
committer | Joshua Bakita <jbakita@cs.unc.edu> | 2020-05-17 16:28:20 -0400 |
commit | 1394cfe730e1e5030decc9990b37011a4957a7c0 (patch) | |
tree | 135ac6edcecdbbe723a6f18eb23d6cf5d606d8fc /include | |
parent | 888ab3700f7d9e0b59795c6d8b0461b3ce0cdc81 (diff) |
Implement background scheduling
This turned out to be incredibly complicated. High-level changes are:
1. Container completion in g_job_completion() has been completely
reworked. We now check for and appropriately handle all possible
states of a background scheduled task.
2. edfsc_cschedule() has had its fixed task scheduling logic overhauled
to be easier to follow. This fixes the logic for when a fixed task
preempts a background scheduled task, but may also fix other bugs.
3. When a task blocks while being background scheduled, remove that
task, NOT the container scheduling that task.
4. Update `entry->scheduled` at the end of edfsc_gschedule(). We will
not run g_finish_switch() if we continue scheduling the same task,
but we still need entry->scheduled to be updated in the case when
we stop background scheduling and switch to normal scheduling. The
original code that sets `entry->scheduled` in g_finish_switch()
may no longer be needed and further investigation of its removal
is encouraged.
5. If a task exits while being background scheduled, remove it from
the container rather than `entry->scheduled`.
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions