projects
/
model-checker.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
hashtable: style
[model-checker.git]
/
model.cc
diff --git
a/model.cc
b/model.cc
index c9bb86824233723fc706ba2ae8b407f14a5c8895..98df8f316106a5f4cce404f4cada60ee35c5898a 100644
(file)
--- a/
model.cc
+++ b/
model.cc
@@
-159,7
+159,7
@@
void ModelChecker::reset_to_initial_state()
/* Print all model-checker output before rollback */
fflush(model_out);
/* Print all model-checker output before rollback */
fflush(model_out);
- snapshot
Object->backTrackBeforeStep
(0);
+ snapshot
_backtrack_before
(0);
}
/** @return a thread ID for a new Thread */
}
/** @return a thread ID for a new Thread */
@@
-174,7
+174,12
@@
unsigned int ModelChecker::get_num_threads() const
return priv->next_thread_id;
}
return priv->next_thread_id;
}
-/** @return The currently executing Thread. */
+/**
+ * Must be called from user-thread context (e.g., through the global
+ * thread_current() interface)
+ *
+ * @return The currently executing Thread.
+ */
Thread * ModelChecker::get_current_thread() const
{
return scheduler->get_current_thread();
Thread * ModelChecker::get_current_thread() const
{
return scheduler->get_current_thread();
@@
-212,9
+217,8
@@
Thread * ModelChecker::get_next_thread(ModelAction *curr)
/* Do not split atomic actions. */
if (curr->is_rmwr())
return thread_current();
/* Do not split atomic actions. */
if (curr->is_rmwr())
return thread_current();
- /* The THREAD_CREATE action points to the created Thread */
else if (curr->get_type() == THREAD_CREATE)
else if (curr->get_type() == THREAD_CREATE)
- return
(Thread *)curr->get_location
();
+ return
curr->get_thread_operand
();
}
/* Have we completed exploring the preselected path? */
}
/* Have we completed exploring the preselected path? */
@@
-820,7
+824,7
@@
bool ModelChecker::process_mutex(ModelAction *curr)
if (curr->get_node()->get_misc() == 0) {
get_safe_ptr_action(condvar_waiters_map, curr->get_location())->push_back(curr);
//disable us
if (curr->get_node()->get_misc() == 0) {
get_safe_ptr_action(condvar_waiters_map, curr->get_location())->push_back(curr);
//disable us
- scheduler->sleep(get_
current_thread(
));
+ scheduler->sleep(get_
thread(curr
));
}
break;
}
}
break;
}
@@
-944,12
+948,12
@@
bool ModelChecker::process_thread_action(ModelAction *curr)
switch (curr->get_type()) {
case THREAD_CREATE: {
switch (curr->get_type()) {
case THREAD_CREATE: {
- Thread *th =
(Thread *)curr->get_location
();
+ Thread *th =
curr->get_thread_operand
();
th->set_creation(curr);
break;
}
case THREAD_JOIN: {
th->set_creation(curr);
break;
}
case THREAD_JOIN: {
- Thread *blocking =
(Thread *)curr->get_location
();
+ Thread *blocking =
curr->get_thread_operand
();
ModelAction *act = get_last_action(blocking->get_id());
curr->synchronize_with(act);
updated = true; /* trigger rel-seq checks */
ModelAction *act = get_last_action(blocking->get_id());
curr->synchronize_with(act);
updated = true; /* trigger rel-seq checks */
@@
-1203,8
+1207,8
@@
ModelAction * ModelChecker::check_current_action(ModelAction *curr)
if (!check_action_enabled(curr)) {
/* Make the execution look like we chose to run this action
* much later, when a lock/join can succeed */
if (!check_action_enabled(curr)) {
/* Make the execution look like we chose to run this action
* much later, when a lock/join can succeed */
- get_
current_thread(
)->set_pending(curr);
- scheduler->sleep(get_
current_thread(
));
+ get_
thread(curr
)->set_pending(curr);
+ scheduler->sleep(get_
thread(curr
));
return NULL;
}
return NULL;
}