X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=pthread.cc;fp=pthread.cc;h=20999aea4899c61f6fb20e0f6707d29e16737dde;hb=7742256df627848c1c375f979f5369a45c92057b;hp=e64cd134b91f4b4aebf0723adc78e283154b7c50;hpb=25d73096cfc14c655f94b01bb235cc5efd1d5696;p=c11tester.git diff --git a/pthread.cc b/pthread.cc index e64cd134..20999aea 100644 --- a/pthread.cc +++ b/pthread.cc @@ -16,12 +16,7 @@ int pthread_create(pthread_t *t, const pthread_attr_t * attr, pthread_start_t start_routine, void * arg) { - if (!model) { - snapshot_system_init(10000, 1024, 1024, 40000); - model = new ModelChecker(); - model->startChecker(); - } - + createModelIfNotExist(); struct pthread_params params = { start_routine, arg }; /* seq_cst is just a 'don't care' parameter */ @@ -65,12 +60,7 @@ void pthread_exit(void *value_ptr) { } int pthread_mutex_init(pthread_mutex_t *p_mutex, const pthread_mutexattr_t * attr) { - if (!model) { - snapshot_system_init(10000, 1024, 1024, 40000); - model = new ModelChecker(); - model->startChecker(); - } - + createModelIfNotExist(); int mutex_type = PTHREAD_MUTEX_DEFAULT; if (attr != NULL) pthread_mutexattr_gettype(attr, &mutex_type); @@ -84,12 +74,7 @@ int pthread_mutex_init(pthread_mutex_t *p_mutex, const pthread_mutexattr_t * att } int pthread_mutex_lock(pthread_mutex_t *p_mutex) { - if (!model) { - snapshot_system_init(10000, 1024, 1024, 40000); - model = new ModelChecker(); - model->startChecker(); - } - + createModelIfNotExist(); ModelExecution *execution = model->get_execution(); /* to protect the case where PTHREAD_MUTEX_INITIALIZER is used @@ -111,12 +96,7 @@ int pthread_mutex_lock(pthread_mutex_t *p_mutex) { } int pthread_mutex_trylock(pthread_mutex_t *p_mutex) { - if (!model) { - snapshot_system_init(10000, 1024, 1024, 40000); - model = new ModelChecker(); - model->startChecker(); - } - + createModelIfNotExist(); ModelExecution *execution = model->get_execution(); cdsc::snapmutex *m = execution->getMutexMap()->get(p_mutex); return m->try_lock() ? 0 : EBUSY; @@ -138,13 +118,7 @@ int pthread_mutex_unlock(pthread_mutex_t *p_mutex) { int pthread_mutex_timedlock (pthread_mutex_t *__restrict p_mutex, const struct timespec *__restrict abstime) { // timedlock just gives the option of giving up the lock, so return and let the scheduler decide which thread goes next - - if (!model) { - snapshot_system_init(10000, 1024, 1024, 40000); - model = new ModelChecker(); - model->startChecker(); - } - + createModelIfNotExist(); ModelExecution *execution = model->get_execution(); /* to protect the case where PTHREAD_MUTEX_INITIALIZER is used @@ -165,12 +139,7 @@ int pthread_mutex_timedlock (pthread_mutex_t *__restrict p_mutex, } pthread_t pthread_self() { - if (!model) { - snapshot_system_init(10000, 1024, 1024, 40000); - model = new ModelChecker(); - model->startChecker(); - } - + createModelIfNotExist(); Thread* th = model->get_current_thread(); return (pthread_t)th->get_id(); }