Merge branch 'master' of /home/git/random-fuzzer into thread-switch
[c11tester.git] / threads-model.h
index f2162a89e55752ffde61e74ebf3f0c675584d4ba..8047e1f33d963d001fab179feab210c405ed7f34 100644 (file)
@@ -49,6 +49,7 @@ public:
 
        static int swap(ucontext_t *ctxt, Thread *t);
        static int swap(Thread *t, ucontext_t *ctxt);
+       static int swap(Thread *t, Thread *t2);
 
        thread_state get_state() const { return state; }
        void set_state(thread_state s);
@@ -101,6 +102,9 @@ public:
 
        bool is_model_thread() const { return model_thread; }
 
+       void * get_stack_addr() { return stack; }
+       ClockVector * get_acq_fence_cv() { return acq_fence_cv; }
+
        friend void thread_startup();
 #ifdef TLS
        friend void setup_context();
@@ -135,6 +139,9 @@ private:
        /** @brief The parent Thread which created this Thread */
        Thread * const parent;
 
+       /** @brief Acquire fence cv */
+       ClockVector *acq_fence_cv;
+
        /** @brief The THREAD_CREATE ModelAction which created this Thread */
        ModelAction *creation;
 
@@ -156,7 +163,9 @@ private:
        void *arg;
        ucontext_t context;
        void *stack;
+       uint32_t stack_size;
 #ifdef TLS
+       void * helper_stack;
 public:
        char *tls;
        ucontext_t helpercontext;
@@ -185,11 +194,12 @@ private:
 
 #ifdef TLS
 uintptr_t get_tls_addr();
+void tlsdestructor(void *v);
 #endif
 
 Thread * thread_current();
 void thread_startup();
-void main_thread_startup();
+void initMainThread();
 
 static inline thread_id_t thrd_to_id(thrd_t t)
 {