/* * RMSScheduler.cpp * * Created on: 02.11.2010 * Author: sven */ #include "RMSScheduler.h" #ifndef RESPONSETIMEANALYSIS_H_ #include "ResponseTimeAnalysis.h" #endif #include RMSScheduler::RMSScheduler() { // TODO Auto-generated constructor stub } RMSScheduler::~RMSScheduler() { // TODO Auto-generated destructor stub } void RMSScheduler::run(task_set& tasks,int ci) { cout << "R M S" << endl; for(unsigned int task_count = 0; task_count < tasks.size(); task_count++) { m_queue.push(&tasks[task_count]); } ResponseTimeAnalysis rta; if(!rta.analyse(m_queue)) { cout << "Task set not runnable. RTA failed" << endl; return; } while (!m_queue.empty()) { Task* t = m_queue.top(); t->dump(); m_queue.pop(); } for(int step= 0; step < ci; step++) { cout << (step + 1) << " "; for(unsigned int task_count = 0; task_count < tasks.size(); task_count++) { m_queue.push(&tasks[task_count]); } bool scheduledAtask = false; while (!m_queue.empty()) { Task* t = m_queue.top(); if(!scheduledAtask && (t->getActC() > 0) ) { t->execute(); scheduledAtask = true; } else { t->requeue(); } m_queue.pop(); } if (!scheduledAtask) { cout << "no task needs to run"; } cout << endl; } }