return model->get_current_thread();
}
+/**
+ * @brief Get the current Thread id
+ *
+ * Must be called from a user context
+ *
+ * @return The id of the currently executing thread
+ */
+thread_id_t thread_current_id(void)
+{
+ ASSERT(model);
+ return model->get_current_thread_id();
+}
+
void modelexit() {
model->switch_thread(new ModelAction(THREAD_FINISH, std::memory_order_seq_cst, thread_current()));
}
if (!pending)
return NULL;
- if (pending->get_type() == THREAD_JOIN)
- return pending->get_thread_operand();
- else if (pending->get_type() == PTHREAD_JOIN)
- return pending->get_thread_operand();
- else if (pending->is_lock())
- return (Thread *)pending->get_mutex()->get_state()->locked;
- return NULL;
+ switch (pending->get_type()) {
+ case THREAD_JOIN:
+ case PTHREAD_JOIN:
+ return pending->get_thread_operand();
+ case ATOMIC_LOCK:
+ return (Thread *)pending->get_mutex()->get_state()->locked;
+ default:
+ return NULL;
+ }
}
/**