X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=threads.h;h=91db236f4bddb904fbd7944c35c00b39bbfce092;hb=ee0f520bb244e2aa820e6b5a7e24c43c396b0905;hp=5e8cbef50a95648f2b6ac35069620b44b4e433a8;hpb=0696cb09629cd168f122a2e134246d79c3c8fd2c;p=model-checker.git diff --git a/threads.h b/threads.h index 5e8cbef..91db236 100644 --- a/threads.h +++ b/threads.h @@ -35,6 +35,7 @@ class ModelAction; /** @brief A Thread is created for each user-space thread */ class Thread { public: + Thread(thread_id_t tid); Thread(thrd_t *t, void (*func)(void *), void *a); ~Thread(); void complete(); @@ -105,7 +106,12 @@ public: friend void thread_startup(); - SNAPSHOTALLOC + /** + * Intentionally NOT allocated with MODELALLOC or SNAPSHOTALLOC. + * Threads should be allocated on the user's normal (snapshotting) heap + * to allow their allocation/deallocation to follow the same pattern as + * the rest of the backtracked/replayed program. + */ private: int create_context(); Thread *parent; @@ -125,7 +131,7 @@ private: * list is used for thread joins, where another Thread waits for this * Thread to complete */ - std::vector wait_list; + std::vector< ModelAction *, SnapshotAlloc > wait_list; /** * The value returned by the last action in this thread