aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJoshua Bakita <jbakita@cs.unc.edu>2020-05-17 16:28:20 -0400
committerJoshua Bakita <jbakita@cs.unc.edu>2020-05-17 16:28:20 -0400
commit1394cfe730e1e5030decc9990b37011a4957a7c0 (patch)
tree135ac6edcecdbbe723a6f18eb23d6cf5d606d8fc /include
parent888ab3700f7d9e0b59795c6d8b0461b3ce0cdc81 (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