save fixed ms-queue
[model-checker-benchmarks.git] / ms-queue / main.c
index c09470de2b22f3760d4b3e2fcb2ee3c3b3e0b195..e46413840bf7e46cba895693392a1153853ddfe5 100644 (file)
@@ -23,19 +23,21 @@ int get_thread_num()
        return -1;
 }
 
+bool succ1, succ2;
+
 static void main_task(void *param)
 {
        unsigned int val;
        int pid = *((int *)param);
-
        if (!pid) {
                input[0] = 17;
                enqueue(queue, input[0]);
-               output[0] = dequeue(queue);
+               succ1 = dequeue(queue, &output[0]);
+               //printf("Dequeue: %d\n", output[0]);
        } else {
                input[1] = 37;
                enqueue(queue, input[1]);
-               output[1] = dequeue(queue);
+               succ2 = dequeue(queue, &output[1]);
        }
 }
 
@@ -44,7 +46,6 @@ int user_main(int argc, char **argv)
        int i;
        int *param;
        unsigned int in_sum = 0, out_sum = 0;
-       int zero = 0;
 
        queue = calloc(1, sizeof(*queue));
        MODEL_ASSERT(queue);
@@ -69,12 +70,12 @@ int user_main(int argc, char **argv)
        }
        for (i = 0; i < num_threads; i++)
                printf("input[%d] = %u\n", i, input[i]);
-       for (i = 0; i < num_threads; i++) {
-               if (output[i] == 0)
-                       zero = 1; /* A zero result means queue was empty */
+       for (i = 0; i < num_threads; i++)
                printf("output[%d] = %u\n", i, output[i]);
-       }
-       MODEL_ASSERT(in_sum == out_sum || zero);
+       if (succ1 && succ2)
+               MODEL_ASSERT(in_sum == out_sum);
+       else
+               MODEL_ASSERT (false);
 
        free(param);
        free(threads);