model: implement, use schedule_next_thread()
[model-checker.git] / schedule.cc
1 #include "threads.h"
2 #include "schedule.h"
3 #include "common.h"
4 #include "model.h"
5
6 void Scheduler::add_thread(Thread *t)
7 {
8         DEBUG("thread %d\n", t->get_id());
9         readyList.push_back(t);
10 }
11
12 Thread *Scheduler::next_thread(void)
13 {
14         Thread *t = model->schedule_next_thread();
15
16         if (t != NULL) {
17                 readyList.remove(t);
18                 return t;
19         }
20         if (readyList.empty())
21                 return NULL;
22
23         current = readyList.front();
24         readyList.pop_front();
25
26         return current;
27 }
28
29 Thread *Scheduler::get_current_thread(void)
30 {
31         return current;
32 }