threads/model: allocate Thread from w/in ModelChecker
[model-checker.git] / threads.cc
index d170b7ada3554da89213ab6219fff15c11ed0019..9de580297871687e4529f2a67512aa6087a9cc1b 100644 (file)
@@ -84,6 +84,7 @@ int Thread::create_context()
  */
 int Thread::swap(Thread *t, ucontext_t *ctxt)
 {
+       t->set_state(THREAD_READY);
        return swapcontext(&t->context, ctxt);
 }
 
@@ -97,6 +98,7 @@ int Thread::swap(Thread *t, ucontext_t *ctxt)
  */
 int Thread::swap(ucontext_t *ctxt, Thread *t)
 {
+       t->set_state(THREAD_RUNNING);
        return swapcontext(ctxt, &t->context);
 }
 
@@ -161,7 +163,7 @@ Thread::Thread(thrd_t *t, void (*func)(void *), void *a) :
                model_print("Error in create_context\n");
 
        id = model->get_next_id();
-       *user_thread = id;
+       user_thread->priv = this;
        parent = thread_current();
 }