// vim: set noet ts=4 sw=4: #include "scheduler.h" Queue readyList = Queue(); 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* thread, unsigned int* cpu) { (void)thread; (void)cpu; return false; } bool Scheduler::isEmpty() const { return false; } void Scheduler::setIdle(IdleThread* that) { (void)that; }