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.

52 lines
1.0 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 (!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; }