Change initialize a bit
[c11tester.git] / threads.cc
index aef263ec4624418c2fc050cd3a998e8ad80bd878..e22ffa3221f83ae1f95abb5b7b6c63da04c72183 100644 (file)
@@ -60,6 +60,19 @@ Thread * thread_current(void)
        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()));
 }
@@ -495,13 +508,15 @@ Thread * Thread::waiting_on() const
        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;
+       }
 }
 
 /**