atomic_store_explicit(&q->nodes[node].next, tmp, relaxed);
while (!success) {
- /****FIXME: detected UL ****/
+ /**** detected UL ****/
tail = atomic_load_explicit(&q->tail, acquire);
/****FIXME: miss ****/
next = atomic_load_explicit(&q->nodes[get_ptr(tail)].next, acquire);
if (get_ptr(next) == 0) { // == NULL
pointer value = MAKE_POINTER(node, get_count(next) + 1);
- /****FIXME: first release UL ****/
+ /**** detected UL ****/
// Second release can be just relaxed
success = atomic_compare_exchange_strong_explicit(&q->nodes[get_ptr(tail)].next,
&next, value, release, relaxed);
}
if (!success) {
// This routine helps the other enqueue to update the tail
- /****FIXME: detected UL ****/
+ /**** detected UL ****/
unsigned int ptr = get_ptr(atomic_load_explicit(&q->nodes[get_ptr(tail)].next, acquire));
pointer value = MAKE_POINTER(ptr,
get_count(tail) + 1);
/****FIXME: miss ****/
- // Seconde release can be just relaxed
+ // Second release can be just relaxed
bool succ = false;
succ = atomic_compare_exchange_strong_explicit(&q->tail,
&tail, value, release, relaxed);
}
}
}
- /****FIXME: first UL ****/
+ /**** dectected UL ****/
// Second release can be just relaxed
atomic_compare_exchange_strong_explicit(&q->tail,
&tail,
pointer next;
while (!success) {
- /****FIXME: detected correctness error ****/
+ /**** detected correctness error ****/
head = atomic_load_explicit(&q->head, acquire);
tail = atomic_load_explicit(&q->tail, relaxed);
/****FIXME: miss ****/
return 0; // NULL
}
/****FIXME: miss (not reached) ****/
- // Seconde release can be just relaxed
+ // Second release can be just relaxed
bool succ = false;
succ = atomic_compare_exchange_strong_explicit(&q->tail,
&tail,