change snapshot mode
[c11tester.git] / threads-model.h
index 5fc6d675aba6a9f05b132ded2ad2aed0ad6250d5..752731e246adc93c9ecaa6a03fef22471f04f77c 100644 (file)
@@ -41,7 +41,9 @@ class ModelAction;
 class Thread {
 public:
        Thread(thread_id_t tid);
-       Thread(thrd_t *t, void (*func)(void *), void *a, Thread *parent);
+       Thread(thread_id_t tid, thrd_t *t, void (*func)(void *), void *a, Thread *parent);
+       Thread(thread_id_t tid, thrd_t *t, void *(*func)(void *), void *a, Thread *parent);
+
        ~Thread();
        void complete();
 
@@ -72,6 +74,10 @@ public:
         */
        uint64_t get_return_value() const { return last_action_val; }
 
+       /** @set and get the return value from pthread functions */
+       void set_pthread_return(void *ret) { pthread_return = ret; }
+       void * get_pthread_return() { return pthread_return; }
+
        /** @return True if this thread is finished executing */
        bool is_complete() const { return state == THREAD_COMPLETED; }
 
@@ -131,6 +137,8 @@ private:
        ModelAction *pending;
 
        void (*start_routine)(void *);
+       void *(*pstart_routine)(void *);
+
        void *arg;
        ucontext_t context;
        void *stack;
@@ -145,6 +153,9 @@ private:
         */
        uint64_t last_action_val;
 
+       /** the value return from pthread functions */
+       void * pthread_return;
+
        /** @brief Is this Thread a special model-checker thread? */
        const bool model_thread;
 };