summaryrefslogtreecommitdiffstats
path: root/Master/Real-Time Systems/Praktikum1/Aufgabe3/src/EDFScheduler.h
diff options
context:
space:
mode:
Diffstat (limited to 'Master/Real-Time Systems/Praktikum1/Aufgabe3/src/EDFScheduler.h')
-rw-r--r--Master/Real-Time Systems/Praktikum1/Aufgabe3/src/EDFScheduler.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/Master/Real-Time Systems/Praktikum1/Aufgabe3/src/EDFScheduler.h b/Master/Real-Time Systems/Praktikum1/Aufgabe3/src/EDFScheduler.h
new file mode 100644
index 0000000..a790a0f
--- /dev/null
+++ b/Master/Real-Time Systems/Praktikum1/Aufgabe3/src/EDFScheduler.h
@@ -0,0 +1,40 @@
+/*
+ * EDFScheduler.h
+ *
+ * Created on: 07.11.2010
+ * Author: sven
+ */
+
+#ifndef EDFSCHEDULER_H_
+#define EDFSCHEDULER_H_
+
+#ifndef TASK_H_
+ #include "Task.h"
+#endif
+
+#include <queue>
+
+class EDFComparator;
+
+typedef priority_queue<Task*,vector<Task*>,EDFComparator> edf_queue;
+
+class EDFComparator
+{
+public:
+ bool operator()(Task*& a, Task*& b) const
+ {
+// return ( b->getActD() < a->getActD() );
+ return ( b->getNextDeadline() < a->getNextDeadline() );
+ }
+};
+class EDFScheduler {
+public:
+ EDFScheduler();
+ virtual ~EDFScheduler();
+ void run(task_set&,int);
+ bool test(task_set&);
+private:
+ edf_queue m_queue;
+};
+
+#endif /* EDFSCHEDULER_H_ */