From 87592b00015f3b76290f431684129440dec01152 Mon Sep 17 00:00:00 2001 From: Peizhao Ou Date: Thu, 15 Jan 2015 13:43:10 -0800 Subject: [PATCH] changes --- benchmark/ms-queue/my_queue.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/benchmark/ms-queue/my_queue.c b/benchmark/ms-queue/my_queue.c index 6d86c4a..ad00c0c 100644 --- a/benchmark/ms-queue/my_queue.c +++ b/benchmark/ms-queue/my_queue.c @@ -22,11 +22,11 @@ static unsigned int new_node() int i; int t = get_thread_num(); for (i = 0; i < MAX_FREELIST; i++) { - unsigned int node = load_32(&free_lists[t][i]); - //unsigned int node = free_lists[t][i]; + //unsigned int node = load_32(&free_lists[t][i]); + unsigned int node = free_lists[t][i]; if (node) { - store_32(&free_lists[t][i], 0); - //free_lists[t][i] = 0; + //store_32(&free_lists[t][i], 0); + free_lists[t][i] = 0; return node; } } @@ -46,13 +46,13 @@ static void reclaim(unsigned int node) for (i = 0; i < MAX_FREELIST; i++) { /* Should never race with our own thread here */ - unsigned int idx = load_32(&free_lists[t][i]); - //unsigned int idx = free_lists[t][i]; + //unsigned int idx = load_32(&free_lists[t][i]); + unsigned int idx = free_lists[t][i]; /* Found empty spot in free list */ if (idx == 0) { - store_32(&free_lists[t][i], node); - //free_lists[t][i] = node; + //store_32(&free_lists[t][i], node); + free_lists[t][i] = node; return; } } @@ -97,8 +97,8 @@ void enqueue(queue_t *q, unsigned int val) pointer tmp; node = new_node(); - store_32(&q->nodes[node].value, val); - //q->nodes[node].value = val; + //store_32(&q->nodes[node].value, val); + q->nodes[node].value = val; tmp = atomic_load_explicit(&q->nodes[node].next, relaxed); set_ptr(&tmp, 0); // NULL atomic_store_explicit(&q->nodes[node].next, tmp, relaxed); @@ -213,7 +213,7 @@ bool dequeue(queue_t *q, int *retVal) @End */ - /****FIXME: miss ****/ + /**** Detected UL/DR (testcase1.c) ****/ next = atomic_load_explicit(&q->nodes[get_ptr(head)].next, acquire); /** @Begin @@ -238,7 +238,7 @@ bool dequeue(queue_t *q, int *retVal) */ return false; // NULL } - /****FIXME: miss (not reached) ****/ + /**** Detected UL (testcase1.c) ****/ // Second release can be just relaxed bool succ = false; succ = atomic_compare_exchange_strong_explicit(&q->tail, @@ -251,8 +251,8 @@ bool dequeue(queue_t *q, int *retVal) //printf("miss4_dequeue\n"); thrd_yield(); } else { - value = load_32(&q->nodes[get_ptr(next)].value); - //value = q->nodes[get_ptr(next)].value; + //value = load_32(&q->nodes[get_ptr(next)].value); + value = q->nodes[get_ptr(next)].value; /****FIXME: correctness error ****/ success = atomic_compare_exchange_strong_explicit(&q->head, &head, -- 2.34.1