projects
/
c11tester.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
seed random number generator with time
[c11tester.git]
/
model.cc
diff --git
a/model.cc
b/model.cc
index 3f811d7d7b11a3ef7c5e7846e58cbbc0a0a4293d..c190e38cacb8c7ccb842957ef07c1c231f3c9bfe 100644
(file)
--- a/
model.cc
+++ b/
model.cc
@@
-22,6
+22,14
@@
ModelChecker *model = NULL;
int inside_model = 0;
ModelChecker *model = NULL;
int inside_model = 0;
+uint64_t get_nanotime()
+{
+ struct timespec currtime;
+ clock_gettime(CLOCK_MONOTONIC, &currtime);
+
+ return currtime.tv_nsec;
+}
+
void placeholder(void *) {
ASSERT(0);
}
void placeholder(void *) {
ASSERT(0);
}
@@
-524,12
+532,16
@@
bool ModelChecker::handleChosenThread(Thread *old)
void ModelChecker::startChecker() {
startExecution();
//Need to initial random number generator state to avoid resets on rollback
void ModelChecker::startChecker() {
startExecution();
//Need to initial random number generator state to avoid resets on rollback
- initstate(423121, random_state, sizeof(random_state));
+ //initstate(423121, random_state, sizeof(random_state));
+ uint64_t seed = get_nanotime();
+ srandom(seed);
snapshot = take_snapshot();
//reset random number generator state
snapshot = take_snapshot();
//reset random number generator state
- setstate(random_state);
+ //setstate(random_state);
+ seed = get_nanotime();
+ srandom(seed);
install_trace_analyses(get_execution());
redirect_output();
install_trace_analyses(get_execution());
redirect_output();