Support for switching to scheduler thread of the current thread on timeout expiry. Scheduler thread is the thread associated with scheduler recv endpoint on cos_switch or cos_sched_asnd.
Minor:
VGA: It looks like the bare metal boot faults at random places with new ACPI/APIC changes and I could relate that to VGA driver, but haven't thoroughly debugged it. For now, allowing VGA printks only after paging_init. This is a workaround for now, need to debug the actual issue after the deadline.
Yet another bug in SL: sl_thd_wakeup_no_cs_rm API to not use CS or not remove thread from the timeout queue, this is required by sl_timeout_xxx api. sl_thd_wakeup_no_cs however is a wrapper around this with removal from timeout queue if thread was blocked on timeout.
Intent for your PR
Choose one (Mandatory):
[ ] This PR is for a code-review and is intended to get feedback, but not to be pulled yet.
[x] This PR is mature, and ready to be integrated into the repo.
Reviewers (Mandatory):
@gparmer
Code Quality
As part of this pull request, I've considered the following:
[x] I've made an attempt to remove all redundant code
[x] I've considered ways in which my changes might impact existing code, and cleaned it up
[x] I've formatted the code in an effort to make it easier to read (proper error handling, function use, etc...)
[x] I've commented appropriately where code is tricky
[x] I agree that there is no "throw-away" code, and that code in this PR is of high quality
Testing
I've tested the code using the following test programs (provide list here):
unit tests in implementation/tests
vkernel in implementation/no_interface
integrated in rump2cos env and basic tests with ping works fine. [There is one major problem which is not related to this PR but perhaps to using sl as vkernel scheduling, and I'm working on that problem -- at some point, system stops responding to pings. ]
Summary of this Pull Request (PR)
Major:
cos_switch
orcos_sched_asnd
.Minor:
paging_init
. This is a workaround for now, need to debug the actual issue after the deadline.sl_thd_wakeup_no_cs_rm
API to not use CS or not remove thread from the timeout queue, this is required bysl_timeout_xxx
api.sl_thd_wakeup_no_cs
however is a wrapper around this with removal from timeout queue if thread was blocked on timeout.Intent for your PR
Choose one (Mandatory):
Reviewers (Mandatory):
@gparmer
Code Quality
As part of this pull request, I've considered the following:
Style:
Code Craftsmanship:
Testing
I've tested the code using the following test programs (provide list here):
implementation/tests
implementation/no_interface