seed random number generator with time
[c11tester.git] / model.cc
index 3f811d7d7b11a3ef7c5e7846e58cbbc0a0a4293d..c190e38cacb8c7ccb842957ef07c1c231f3c9bfe 100644 (file)
--- a/model.cc
+++ b/model.cc
 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();