ms-queue: add initialization
[model-checker-benchmarks.git] / ms-queue / my_queue.c
index 67ec68090545aa2eabf2114dc1bfeed880d74d6d..2377d01a4679cad3a4bdcc3175aa01bfed26ccec 100644 (file)
@@ -27,23 +27,26 @@ void init_queue(queue_t *q, int num_threads)
        for (i = 0; i < num_threads; i++)
                node_nums[i] = 2 + i;
 
+       /* Note: needed to add this init manually */
+       atomic_init(&q->nodes[0].next, 0);
+
        /* initialize queue */
        head = MAKE_POINTER(1, 0);
        tail = MAKE_POINTER(1, 0);
        next = MAKE_POINTER(0, 0); // (NULL, 0)
 
-       atomic_store(&q->head, head);
-       atomic_store(&q->tail, tail);
-       atomic_store(&q->nodes[1].next, next);
+       atomic_init(&q->head, head);
+       atomic_init(&q->tail, tail);
+       atomic_init(&q->nodes[1].next, next);
 
        /* initialize avail list */
        for (i = 2; i < MAX_NODES; i++) {
                next = MAKE_POINTER(i + 1, 0);
-               atomic_store(&q->nodes[i].next, next);
+               atomic_init(&q->nodes[i].next, next);
        }
 
        next = MAKE_POINTER(0, 0); // (NULL, 0)
-       atomic_store(&q->nodes[MAX_NODES].next, next);
+       atomic_init(&q->nodes[MAX_NODES].next, next);
 }
 
 void enqueue(queue_t *q, unsigned int val)