X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=threads.h;h=9456a22f2fe4942b1004a87794fa3474eaeab26b;hb=ea0cb2585eee658354f48b4bbfebaf030cccf317;hp=939676027ecea091b776735a0b372dcd515ad1ad;hpb=8362b1efa92635ab49bd937edf451e3b2e0981bc;p=model-checker.git diff --git a/threads.h b/threads.h index 9396760..9456a22 100644 --- a/threads.h +++ b/threads.h @@ -22,11 +22,7 @@ typedef enum thread_state { THREAD_CREATED, /** Thread is running */ THREAD_RUNNING, - /** - * Thread has yielded to the model-checker but is ready to run. Used - * during an action that caused a context switch to the model-checking - * context. - */ + /** Thread is not currently running but is ready to run */ THREAD_READY, /** * Thread is waiting on another action (e.g., thread completion, lock @@ -83,17 +79,19 @@ public: bool wait_list_empty() { return wait_list.empty(); } /** - * Add a thread to the waiting list for this thread. - * @param t The Thread to add + * Add a ModelAction to the waiting list for this thread. + * @param t The ModelAction to add. Must be a JOIN. */ - void push_wait_list(Thread *t) { wait_list.push_back(t); } + void push_wait_list(ModelAction *act) { wait_list.push_back(act); } + ModelAction * get_pending() { return pending; } + void set_pending(ModelAction *act) { pending = act; } /** - * Remove one Thread from the waiting list - * @return The Thread that was removed from the waiting list + * Remove one ModelAction from the waiting list + * @return The ModelAction that was removed from the waiting list */ - Thread * pop_wait_list() { - Thread *ret = wait_list.front(); + ModelAction * pop_wait_list() { + ModelAction *ret = wait_list.front(); wait_list.pop_back(); return ret; } @@ -106,6 +104,7 @@ private: Thread *parent; ModelAction *creation; + ModelAction *pending; void (*start_routine)(void *); void *arg; ucontext_t context; @@ -115,11 +114,11 @@ private: thread_state state; /** - * A list of Threads waiting on this Thread. Particularly, this list is - * used for thread joins, where another Thread waits for this Thread to - * complete + * A list of ModelActions waiting on this Thread. Particularly, this + * list is used for thread joins, where another Thread waits for this + * Thread to complete */ - std::vector wait_list; + std::vector wait_list; /** * The value returned by the last action in this thread