X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=ms-queue%2Ftestcase1.c;h=b416c7df199f0fb6aa982befe74b94d24162fdcd;hb=b684f62b7411fea476b2e1f6a8bbf920ac4c7216;hp=6548366cab6a0458e9d36a75b01827826d45f75b;hpb=49ad748941ac5aec2723380ffe2d2719e760d42e;p=model-checker-benchmarks.git diff --git a/ms-queue/testcase1.c b/ms-queue/testcase1.c index 6548366..b416c7d 100644 --- a/ms-queue/testcase1.c +++ b/ms-queue/testcase1.c @@ -5,7 +5,6 @@ #include "queue.h" #include "model-assert.h" -static int procs = 4; static queue_t *queue; static thrd_t *threads; static unsigned int *input; @@ -24,24 +23,33 @@ int get_thread_num() } bool succ1, succ2; +atomic_int x[3]; +int idx1, idx2; +unsigned int reclaimNode; +static int procs = 4; static void main_task(void *param) { unsigned int val; int pid = *((int *)param); if (pid % 4 == 0) { - input[0] = 17; - enqueue(queue, input[0]); - succ1 = dequeue(queue, &output[0]); - //printf("Dequeue: %d\n", output[0]); + atomic_store_explicit(&x[0], 1, memory_order_relaxed); + enqueue(queue, 0, false); } else if (pid % 4 == 1) { - input[1] = 37; - enqueue(queue, input[1]); - succ2 = dequeue(queue, &output[1]); + atomic_store_explicit(&x[1], 1, memory_order_relaxed); + enqueue(queue, 1, false); } else if (pid % 4 == 2) { - + succ1 = dequeue(queue, &idx1, &reclaimNode); + if (succ1) { + atomic_load_explicit(&x[idx1], memory_order_relaxed); + } } else if (pid % 4 == 3) { - + /* + succ2 = dequeue(queue, &idx2, &reclaimNode); + if (succ2) { + atomic_load_explicit(&x[idx2], memory_order_relaxed); + } + */ } } @@ -60,6 +68,9 @@ int user_main(int argc, char **argv) input = calloc(num_threads, sizeof(*input)); output = calloc(num_threads, sizeof(*output)); + atomic_init(&x[0], 0); + atomic_init(&x[1], 0); + atomic_init(&x[2], 0); init_queue(queue, num_threads); for (i = 0; i < num_threads; i++) { param[i] = i;