X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=model.cc;h=c190e38cacb8c7ccb842957ef07c1c231f3c9bfe;hb=ba9cc8ef093a985673efc0d440898ae3b6fe0bb5;hp=3f811d7d7b11a3ef7c5e7846e58cbbc0a0a4293d;hpb=6b01d1c06ef2c3f9313196bd9fa7e905bfbdfde1;p=c11tester.git diff --git a/model.cc b/model.cc index 3f811d7d..c190e38c 100644 --- a/model.cc +++ b/model.cc @@ -22,6 +22,14 @@ 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); } @@ -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 - 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 - setstate(random_state); + //setstate(random_state); + seed = get_nanotime(); + srandom(seed); install_trace_analyses(get_execution()); redirect_output();