void *thr2() { __CS_cs(); if (__CS_ret != 0) return 0; flag2[__CS_round] = 1; __CS_cs(); if (__CS_ret != 0) return 0; while (flag1[__CS_round] >= 1) { __CS_cs(); if (__CS_ret != 0) return 0; if (turn[__CS_round] != 1) { __CS_cs(); if (__CS_ret != 0) return 0; flag2[__CS_round] = 0; __CS_cs(); if (__CS_ret != 0) return 0; while (turn[__CS_round] != 1) { __CS_cs(); if (__CS_ret != 0) return 0; } __CS_cs(); if (__CS_ret != 0) return 0; ; __CS_cs(); if (__CS_ret != 0) return 0; flag2[__CS_round] = 1; __CS_cs(); if (__CS_ret != 0) return 0; } __CS_cs(); if (__CS_ret != 0) return 0; } __CS_cs(); if (__CS_ret != 0) return 0; x[__CS_round] = 1; __CS_cs(); if (__CS_ret != 0) return 0; if (!(x[__CS_round] >= 1)) { __CS_cs(); if (__CS_ret != 0) return 0; __CS_ERROR: __CS_error = 1; __CS_ret = __CS_ret_ERROR; return 0; __CS_cs(); if (__CS_ret != 0) return 0; goto __CS_ERROR; } __CS_cs(); if (__CS_ret != 0) return 0; ; __CS_cs(); if (__CS_ret != 0) return 0; turn[__CS_round] = 1; __CS_cs(); if (__CS_ret != 0) return 0; flag2[__CS_round] = 0; __CS_cs(); if (__CS_ret != 0) return 0; }
void *main_thread(void *arg) { __CS_pthread_t id1; __CS_pthread_t id2; __CS_cs(); if (__CS_ret != 0) return 0; enqueue_flag[__CS_round] = 1; __CS_cs(); if (__CS_ret != 0) return 0; dequeue_flag[__CS_round] = 0; __CS_cs(); if (__CS_ret != 0) return 0; init(&queue[__CS_round]); __CS_cs(); if (__CS_ret != 0) return 0; if ((!empty(&queue[__CS_round])) == (-1)) { __CS_cs(); if (__CS_ret != 0) return 0; goto __CS_ERROR; __CS_cs(); if (__CS_ret != 0) return 0; __CS_ERROR: __CS_error = 1; __CS_ret = __CS_ret_ERROR; __CS_error_detail = __ERR_ERROR_LABEL_REACHED; return 0; __CS_cs(); if (__CS_ret != 0) return 0; ; __CS_cs(); if (__CS_ret != 0) return 0; } __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_mutex_init(&m[__CS_round], 0); __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_create(&id1, 0, t1, &queue[__CS_round]); __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_create(&id2, 0, t2, &queue[__CS_round]); __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_join(id1, 0); __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_join(id2, 0); __CS_cs(); if (__CS_ret != 0) return 0; }
void *main_thread(void *arg) { __CS_pthread_t t1; __CS_pthread_t t2; __CS_cs(); if (__CS_ret != 0) return 0; num[__CS_round] = 1; __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_mutex_init(&m[__CS_round], 0); __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_cond_init(&empty[__CS_round], 0); __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_cond_init(&full[__CS_round], 0); __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_create(&t1, 0, thread1, 0); __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_create(&t2, 0, thread2, 0); __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_join(t1, 0); __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_join(t2, 0); __CS_cs(); if (__CS_ret != 0) return 0; if (num[__CS_round] != 1) { __CS_cs(); if (__CS_ret != 0) return 0; __CS_ERROR: __CS_error = 1; __CS_ret = __CS_ret_ERROR; return 0; __CS_cs(); if (__CS_ret != 0) return 0; goto __CS_ERROR; __CS_cs(); if (__CS_ret != 0) return 0; ; __CS_cs(); if (__CS_ret != 0) return 0; } __CS_cs(); if (__CS_ret != 0) return 0; }
void *t1(void *arg) { int value; int i; __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_mutex_lock(&m[__CS_round]); __CS_cs(); if (__CS_ret != 0) return 0; if (enqueue_flag[__CS_round]) { __CS_cs(); if (__CS_ret != 0) return 0; for (i = 0; i < 20; i++) { __CS_cs(); if (__CS_ret != 0) return 0; value = nondet_int(); __CS_cs(); if (__CS_ret != 0) return 0; enqueue(&queue[__CS_round], value); __CS_cs(); if (__CS_ret != 0) return 0; stored_elements[__CS_round][i] = value; __CS_cs(); if (__CS_ret != 0) return 0; } __CS_cs(); if (__CS_ret != 0) return 0; enqueue_flag[__CS_round] = 0; __CS_cs(); if (__CS_ret != 0) return 0; dequeue_flag[__CS_round] = 1; __CS_cs(); if (__CS_ret != 0) return 0; } __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_mutex_unlock(&m[__CS_round]); __CS_cs(); if (__CS_ret != 0) return 0; return 0; __CS_cs(); if (__CS_ret != 0) return 0; }
void *t2(void *arg) { int i; __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_mutex_lock(&m[__CS_round]); __CS_cs(); if (__CS_ret != 0) return 0; if (dequeue_flag[__CS_round]) { __CS_cs(); if (__CS_ret != 0) return 0; for (i = 0; i < 20; i++) { __CS_cs(); if (__CS_ret != 0) return 0; if (empty(&queue[__CS_round]) != (-1)) { __CS_cs(); if (__CS_ret != 0) return 0; if ((!dequeue(&queue[__CS_round])) == stored_elements[__CS_round][i]) { __CS_cs(); if (__CS_ret != 0) return 0; goto __CS_ERROR; __CS_cs(); if (__CS_ret != 0) return 0; __CS_ERROR: __CS_error = 1; __CS_ret = __CS_ret_ERROR; __CS_error_detail = __ERR_ERROR_LABEL_REACHED; return 0; __CS_cs(); if (__CS_ret != 0) return 0; ; __CS_cs(); if (__CS_ret != 0) return 0; } } __CS_cs(); if (__CS_ret != 0) return 0; } __CS_cs(); if (__CS_ret != 0) return 0; dequeue_flag[__CS_round] = 0; __CS_cs(); if (__CS_ret != 0) return 0; enqueue_flag[__CS_round] = 1; __CS_cs(); if (__CS_ret != 0) return 0; } __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_mutex_unlock(&m[__CS_round]); __CS_cs(); if (__CS_ret != 0) return 0; return 0; __CS_cs(); if (__CS_ret != 0) return 0; }
void *main_thread(void *arg) { __CS_pthread_t t1; __CS_pthread_t t2; __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_mutex_init(&ma[__CS_round], 0); __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_mutex_init(&mb[__CS_round], 0); __CS_cs(); if (__CS_ret != 0) return 0; data1[__CS_round] = 10; __CS_cs(); if (__CS_ret != 0) return 0; data2[__CS_round] = 10; __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_create(&t1, 0, thread1, 0); __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_create(&t2, 0, thread2, 0); __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_join(t1, 0); __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_join(t2, 0); __CS_cs(); if (__CS_ret != 0) return 0; if ((data1[__CS_round] == 16) && (data2[__CS_round] == 5)) { __CS_cs(); if (__CS_ret != 0) return 0; __CS_ERROR: __CS_error = 1; __CS_ret = __CS_ret_ERROR; return 0; __CS_cs(); if (__CS_ret != 0) return 0; goto __CS_ERROR; __CS_cs(); if (__CS_ret != 0) return 0; ; __CS_cs(); if (__CS_ret != 0) return 0; } __CS_cs(); if (__CS_ret != 0) return 0; }
void *de_allocator() { __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_mutex_lock(&m_busy[__CS_round]); __CS_cs(); if (__CS_ret != 0) return 0; if (busy[__CS_round] == 0) { __CS_cs(); if (__CS_ret != 0) return 0; block[__CS_round] = 0; __CS_cs(); if (__CS_ret != 0) return 0; if (!(block[__CS_round] == 0)) { __CS_cs(); if (__CS_ret != 0) return 0; __CS_ERROR: __CS_error = 1; __CS_ret = __CS_ret_ERROR; return 0; __CS_cs(); if (__CS_ret != 0) return 0; goto __CS_ERROR; } __CS_cs(); if (__CS_ret != 0) return 0; ; __CS_cs(); if (__CS_ret != 0) return 0; } __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_mutex_unlock(&m_busy[__CS_round]); __CS_cs(); if (__CS_ret != 0) return 0; return (void *) 0; __CS_cs(); if (__CS_ret != 0) return 0; }
int stack_empty(void) { __CS_cs(); if (__CS_ret != 0) return 0; top[__CS_round] == 0 ? 1 : 0; __CS_cs(); if (__CS_ret != 0) return 0; }
int get_top(void) { __CS_cs(); if (__CS_ret != 0) return 0; return top[__CS_round]; __CS_cs(); if (__CS_ret != 0) return 0; }
void dec_top(void) { __CS_cs(); if (__CS_ret != 0) return; top[__CS_round]--; __CS_cs(); if (__CS_ret != 0) return; }
void inc_top(void) { __CS_cs(); if (__CS_ret != 0) return; top[__CS_round]++; __CS_cs(); if (__CS_ret != 0) return; }
void *t1(void *arg) { int value; int i; __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_mutex_lock(&m[__CS_round]); __CS_cs(); if (__CS_ret != 0) return 0; value = nondet_int(); __CS_cs(); if (__CS_ret != 0) return 0; if (enqueue(&queue[__CS_round], value)) { __CS_cs(); if (__CS_ret != 0) return 0; goto __CS_ERROR; __CS_cs(); if (__CS_ret != 0) return 0; } __CS_cs(); if (__CS_ret != 0) return 0; stored_elements[__CS_round][0] = value; __CS_cs(); if (__CS_ret != 0) return 0; if (empty(&queue[__CS_round])) { __CS_cs(); if (__CS_ret != 0) return 0; goto __CS_ERROR; __CS_cs(); if (__CS_ret != 0) return 0; } __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_mutex_unlock(&m[__CS_round]); __CS_cs(); if (__CS_ret != 0) return 0; for (i = 0; i < (20 - 1); i++) { __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_mutex_lock(&m[__CS_round]); __CS_cs(); if (__CS_ret != 0) return 0; if (enqueue_flag[__CS_round]) { __CS_cs(); if (__CS_ret != 0) return 0; value = nondet_int(); __CS_cs(); if (__CS_ret != 0) return 0; enqueue(&queue[__CS_round], value); __CS_cs(); if (__CS_ret != 0) return 0; stored_elements[__CS_round][i + 1] = value; __CS_cs(); if (__CS_ret != 0) return 0; enqueue_flag[__CS_round] = 0; __CS_cs(); if (__CS_ret != 0) return 0; dequeue_flag[__CS_round] = 1; __CS_cs(); if (__CS_ret != 0) return 0; } __CS_cs(); if (__CS_ret != 0) return 0; __CS_pthread_mutex_unlock(&m[__CS_round]); __CS_cs(); if (__CS_ret != 0) return 0; } __CS_cs(); if (__CS_ret != 0) return 0; return 0; __CS_cs(); if (__CS_ret != 0) return 0; __CS_ERROR: __CS_error = 1; __CS_ret = __CS_ret_ERROR; return 0; __CS_cs(); if (__CS_ret != 0) return 0; ; __CS_cs(); if (__CS_ret != 0) return 0; }