X-Git-Url: http://demsky.eecs.uci.edu/git/?p=model-checker-benchmarks.git;a=blobdiff_plain;f=ms-queue%2Fmy_queue.c;h=6c0ccd4bea4c0f49b2a1fdd4f9b24d992dc0f749;hp=ef3555296b1933cfb0f1b8d34d203de6089ea4d6;hb=f19c4f0d0d8c054fdea82137c57dc0dca3059704;hpb=a757e79cb775f910bae08e1522029639d8a1ea91 diff --git a/ms-queue/my_queue.c b/ms-queue/my_queue.c index ef35552..6c0ccd4 100644 --- a/ms-queue/my_queue.c +++ b/ms-queue/my_queue.c @@ -120,9 +120,8 @@ void enqueue(queue_t *q, unsigned int val) release, release); } -unsigned int dequeue(queue_t *q) +bool dequeue(queue_t *q, unsigned int *retVal) { - unsigned int value; int success = 0; pointer head; pointer tail; @@ -139,7 +138,7 @@ unsigned int dequeue(queue_t *q) MODEL_ASSERT(get_ptr(next) != POISON_IDX); if (get_ptr(next) == 0) { // NULL - return 0; // NULL + return false; // NULL } atomic_compare_exchange_strong_explicit(&q->tail, &tail, @@ -147,7 +146,7 @@ unsigned int dequeue(queue_t *q) release, release); thrd_yield(); } else { - value = load_32(&q->nodes[get_ptr(next)].value); + *retVal = load_32(&q->nodes[get_ptr(next)].value); success = atomic_compare_exchange_strong_explicit(&q->head, &head, MAKE_POINTER(get_ptr(next), get_count(head) + 1), @@ -158,5 +157,5 @@ unsigned int dequeue(queue_t *q) } } reclaim(get_ptr(head)); - return value; + return true; }