#ifndef __NODESTACK_H__
#define __NODESTACK_H__
-#include <list>
#include <vector>
#include <cstddef>
#include <inttypes.h>
#include "mymemory.h"
-#include "modeltypes.h"
#include "schedule.h"
+#include "promise.h"
class ModelAction;
class Thread;
typedef int promise_t;
-struct future_value {
- uint64_t value;
- modelclock_t expiration;
-};
-
struct fairness_info {
unsigned int enabled_count;
unsigned int turns;
bool priority;
};
-
/**
* @brief A single node in a NodeStack
*
/* return true = backtrack set is empty */
bool backtrack_empty() const;
+ void clear_backtracking();
void explore_child(ModelAction *act, enabled_type_t *is_enabled);
/* return false = thread was already in backtrack */
bool set_backtrack(thread_id_t id);
* occurred previously in the stack. */
Node * get_parent() const { return parent; }
- bool add_future_value(uint64_t value, modelclock_t expiration);
- uint64_t get_future_value() const;
- modelclock_t get_future_value_expiration() const;
+ bool add_future_value(struct future_value fv);
+ struct future_value get_future_value() const;
bool increment_future_value();
bool future_value_empty() const;
bool increment_relseq_break();
bool relseq_break_empty() const;
- void print();
+ void print() const;
void print_may_read_from();
MEMALLOC