#define __THREADS_H__
#include <ucontext.h>
+#include <stdint.h>
+
#include "mymemory.h"
#include "libthreads.h"
#define THREAD_ID_T_NONE -1
+/** @brief Represents the state of a user Thread */
typedef enum thread_state {
+ /** Thread was just created and hasn't run yet */
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_READY,
+ /** Thread has completed its execution */
THREAD_COMPLETED
} thread_state;
* atomic read).
* @param value The value to return
*/
- void set_return_value(int value) { last_action_val = value; }
+ void set_return_value(uint64_t value) { last_action_val = value; }
/**
* Retrieve a return value for the last action in this thread. Used,
* be called from a user context.
* @return The value 'returned' by the action
*/
- int get_return_value() { return last_action_val; }
+ uint64_t get_return_value() { return last_action_val; }
friend void thread_startup();
* @see Thread::set_return_value()
* @see Thread::get_return_value()
*/
- int last_action_val;
+ uint64_t last_action_val;
};
Thread * thread_current();