#include "action.h"
#include "clockvector.h"
#include "common.h"
+#include "threads.h"
#define ACTION_INITIAL_CLOCK 0
#include <list>
#include <cstddef>
+#include <inttypes.h>
-#include "threads.h"
#include "mymemory.h"
-#include "clockvector.h"
#include "memoryorder.h"
+#include "modeltypes.h"
+
+class ClockVector;
using std::memory_order;
using std::memory_order_relaxed;
#include "action.h"
#include "clockvector.h"
#include "common.h"
+#include "threads.h"
/**
* Constructs a new ClockVector, given a parent ClockVector and a first
#ifndef __CLOCKVECTOR_H__
#define __CLOCKVECTOR_H__
-#include "threads.h"
#include "mymemory.h"
+#include "modeltypes.h"
-typedef unsigned int modelclock_t;
/* Forward declaration */
class ModelAction;
#include "model.h"
#include "cmodelint.h"
+#include "threads.h"
/** Performs a read action.*/
uint64_t model_read_action(void * obj, memory_order ord) {
#include <stdio.h>
#include <cstring>
#include "mymemory.h"
+#include "clockvector.h"
struct ShadowTable *root;
std::vector<struct DataRace *> unrealizedraces;
#ifndef DATARACE_H
#include "config.h"
#include <stdint.h>
-#include "clockvector.h"
#include <vector>
+#include "modeltypes.h"
+
+/* Forward declaration */
+class ClockVector;
+class ModelAction;
struct ShadowTable {
void * array[65536];
#include "impatomic.h"
#include "common.h"
#include "model.h"
+#include "threads.h"
namespace std {
#include "common.h"
#include "datarace.h"
#include "model.h"
+#include "threads.h"
void store_8(void *addr, uint8_t val)
{
#include "promise.h"
#include "datarace.h"
#include "mutex.h"
+#include "threads.h"
#define INITIAL_THREAD_ID 0
#include <ucontext.h>
#include "mymemory.h"
-#include "libthreads.h"
-#include "threads.h"
#include "action.h"
-#include "clockvector.h"
#include "hashtable.h"
#include "workqueue.h"
#include "config.h"
+#include "modeltypes.h"
/* Forward declaration */
class NodeStack;
class CycleGraph;
class Promise;
class Scheduler;
+class Thread;
/** @brief Shorthand for a list of release sequence heads */
typedef std::vector< const ModelAction *, ModelAlloc<const ModelAction *> > rel_heads_list_t;
--- /dev/null
+#ifndef __MODELTYPES_H__
+#define __MODELTYPES_H__
+
+typedef int thread_id_t;
+
+#define THREAD_ID_T_NONE -1
+
+typedef unsigned int modelclock_t;
+
+#endif /* __MODELTYPES_H__ */
#include "mutex.h"
#include "model.h"
+#include "threads.h"
+#include "clockvector.h"
namespace std {
mutex::mutex() {
#ifndef MUTEX_H
#define MUTEX_H
-#include "threads.h"
-#include "clockvector.h"
+
+#include "modeltypes.h"
namespace std {
struct mutex_state {
#include "action.h"
#include "common.h"
#include "model.h"
+#include "threads.h"
/**
* @brief Node constructor
#include <list>
#include <vector>
#include <cstddef>
-#include "threads.h"
+#include <inttypes.h>
+
#include "mymemory.h"
-#include "clockvector.h"
+#include "modeltypes.h"
class ModelAction;
+class Thread;
/**
* A flag used for the promise counting/combination problem within a node,
#include "mymemory.h"
#include "libthreads.h"
-
-typedef int thread_id_t;
-
-#define THREAD_ID_T_NONE -1
+#include "modeltypes.h"
/** @brief Represents the state of a user Thread */
typedef enum thread_state {