You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.1 KiB
C++
53 lines
1.1 KiB
C++
// vim: set noet ts=4 sw=4:
|
|
|
|
#include "scheduler.h"
|
|
|
|
Queue<Thread> readyList = Queue<Thread>(0);
|
|
|
|
Scheduler::Scheduler() {
|
|
}
|
|
|
|
Thread* Scheduler::getNext() { return nullptr; }
|
|
|
|
void Scheduler::schedule() {
|
|
// TODO maybe guard?
|
|
Thread* next = readyList.dequeue();
|
|
assert(next != nullptr);
|
|
dispatcher.go(next);
|
|
}
|
|
|
|
void Scheduler::ready(Thread* that) {
|
|
assert(that != nullptr);
|
|
readyList.enqueue(*that);
|
|
}
|
|
|
|
void Scheduler::resume(bool ready) {
|
|
if (ready)
|
|
//if (!active()->kill_flag)
|
|
readyList.enqueue(*active());
|
|
Thread* thread = readyList.dequeue();
|
|
assert(thread != nullptr);
|
|
dispatcher.dispatch(thread);
|
|
}
|
|
|
|
void Scheduler::exit() {
|
|
Thread* thread = readyList.dequeue();
|
|
assert(thread != nullptr);
|
|
dispatcher.dispatch(thread);
|
|
}
|
|
|
|
void Scheduler::kill(Thread* that) {
|
|
readyList.remove(that);
|
|
that->kill_flag = true;
|
|
}
|
|
|
|
bool Scheduler::isActive(const Thread* that, unsigned int* cpu) {
|
|
(void)that;
|
|
(void)cpu;
|
|
return false;
|
|
}
|
|
|
|
bool Scheduler::isEmpty() const { return false; }
|
|
|
|
void Scheduler::setIdle(IdleThread* that) { (void)that; }
|