X-Git-Url: http://plrg.eecs.uci.edu/git/?p=c11tester.git;a=blobdiff_plain;f=fuzzer.cc;h=e102d9c34431a13dea089d9437857640e2691cfd;hp=679b0af448d91dc7ae7863adc007addd99bf054e;hb=25d73096cfc14c655f94b01bb235cc5efd1d5696;hpb=6898da1b7c46ddf3427ea0127dc68f8cc6016511 diff --git a/fuzzer.cc b/fuzzer.cc index 679b0af4..e102d9c3 100644 --- a/fuzzer.cc +++ b/fuzzer.cc @@ -2,6 +2,7 @@ #include #include "threads-model.h" #include "model.h" +#include "action.h" int Fuzzer::selectWrite(ModelAction *read, SnapVector * rf_set) { int random_index = random() % rf_set->size(); @@ -15,7 +16,7 @@ Thread * Fuzzer::selectThread(int * threadlist, int numthreads) { return model->get_thread(curr_tid); } -Thread * Fuzzer::selectNotify(action_list_t * waiters) { +Thread * Fuzzer::selectNotify(simple_action_list_t * waiters) { int numwaiters = waiters->size(); int random_index = random() % numwaiters; sllnode * it = waiters->begin(); @@ -25,3 +26,20 @@ Thread * Fuzzer::selectNotify(action_list_t * waiters) { waiters->erase(it); return thread; } + +bool Fuzzer::shouldSleep(const ModelAction *sleep) { + return true; +} + +bool Fuzzer::shouldWake(const ModelAction *sleep) { + struct timespec currtime; + clock_gettime(CLOCK_MONOTONIC, &currtime); + uint64_t lcurrtime = currtime.tv_sec * 1000000000 + currtime.tv_nsec; + + return ((sleep->get_time()+sleep->get_value()) < lcurrtime); +} + +bool Fuzzer::shouldWait(const ModelAction * act) +{ + return true; +}