X-Git-Url: http://plrg.eecs.uci.edu/git/?p=c11tester.git;a=blobdiff_plain;f=futex.cc;h=677b4afd9fe29740aacd604566d8811da833d06f;hp=b92981119ec5132a00da44348ac5695f104cc31a;hb=251ac4b4bf3a9f2d3cfacc1e6618200ca1c431ac;hpb=63b2c687570085f2a87b6a659d26608228af1ee0 diff --git a/futex.cc b/futex.cc index b9298111..677b4afd 100644 --- a/futex.cc +++ b/futex.cc @@ -45,8 +45,8 @@ namespace std _GLIBCXX_VISIBILITY(default) ModelExecution *execution = model->get_execution(); - cdsc::condition_variable *v = new cdsc::condition_variable(); - cdsc::mutex *m = new cdsc::mutex(); + cdsc::snapcondition_variable *v = new cdsc::snapcondition_variable(); + cdsc::snapmutex *m = new cdsc::snapmutex(); execution->getCondMap()->put( (pthread_cond_t *) __addr, v); execution->getMutexMap()->put( (pthread_mutex_t *) __addr, m); @@ -61,6 +61,10 @@ namespace std _GLIBCXX_VISIBILITY(default) // INT_MAX wakes all the waiters at the address __addr ModelExecution *execution = model->get_execution(); cdsc::condition_variable *v = execution->getCondMap()->get( (pthread_cond_t *) __addr); + + if (v == NULL) + return;// do nothing + v->notify_all(); }