Thread * curr_thread = thread_current();
/* Add dummy "start" action, just to create a first clock vector */
- model->switch_to_master(new ModelAction(THREAD_START, std::memory_order_seq_cst, curr_thread));
+ model->switch_thread(new ModelAction(THREAD_START, std::memory_order_seq_cst, curr_thread));
real_init_all();
return model_swapcontext(ctxt, &t->context);
}
+int Thread::swap(Thread *t, Thread *t2)
+{
+ t->set_state(THREAD_READY);
+ t2->set_state(THREAD_RUNNING);
+#ifdef TLS
+ if (t2->tls != NULL)
+ set_tls_addr((uintptr_t)t2->tls);
+#endif
+ return model_swapcontext(&t->context, &t2->context);
+}
/** Terminate a thread and free its stack. */
void Thread::complete()