projects
/
model-checker.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
some changes towards reading from future writes
[model-checker.git]
/
schedule.cc
diff --git
a/schedule.cc
b/schedule.cc
index d344fb1acdcf858db73d098b7341a8dae930125f..1791605b7c38842c37d11553c37f663c9dc88c38 100644
(file)
--- a/
schedule.cc
+++ b/
schedule.cc
@@
-3,13
+3,26
@@
#include "common.h"
#include "model.h"
#include "common.h"
#include "model.h"
+Scheduler::Scheduler() :
+ current(NULL)
+{
+}
+
void Scheduler::add_thread(Thread *t)
{
DEBUG("thread %d\n", t->get_id());
readyList.push_back(t);
}
void Scheduler::add_thread(Thread *t)
{
DEBUG("thread %d\n", t->get_id());
readyList.push_back(t);
}
-Thread *Scheduler::next_thread(void)
+void Scheduler::remove_thread(Thread *t)
+{
+ if (current == t)
+ current = NULL;
+ else
+ readyList.remove(t);
+}
+
+Thread * Scheduler::next_thread(void)
{
Thread *t = model->schedule_next_thread();
{
Thread *t = model->schedule_next_thread();
@@
-29,7
+42,7
@@
Thread *Scheduler::next_thread(void)
return t;
}
return t;
}
-Thread *Scheduler::get_current_thread(void)
+Thread *
Scheduler::get_current_thread(void)
{
return current;
}
{
return current;
}
@@
-37,12
+50,12
@@
Thread *Scheduler::get_current_thread(void)
void Scheduler::print()
{
if (current)
void Scheduler::print()
{
if (current)
-
printf
("Current thread: %d\n", current->get_id());
+
DEBUG
("Current thread: %d\n", current->get_id());
else
else
-
printf
("No current thread\n");
-
printf("# Threads in ready list: %ld
\n", readyList.size());
+
DEBUG
("No current thread\n");
+
DEBUG("Num. threads in ready list: %zu
\n", readyList.size());
- std::list<Thread *>::iterator it;
+ std::list<Thread *
, MyAlloc< Thread * >
>::iterator it;
for (it = readyList.begin(); it != readyList.end(); it++)
for (it = readyList.begin(); it != readyList.end(); it++)
-
printf
("In ready list: thread %d\n", (*it)->get_id());
+
DEBUG
("In ready list: thread %d\n", (*it)->get_id());
}
}