diff --git a/include/ck_hp_fifo.h b/include/ck_hp_fifo.h index e40e90e..12fa790 100644 --- a/include/ck_hp_fifo.h +++ b/include/ck_hp_fifo.h @@ -81,7 +81,7 @@ ck_hp_fifo_enqueue_mpmc(ck_hp_record_t *record, for (;;) { tail = ck_pr_load_ptr(&fifo->tail); ck_hp_set(record, 0, tail); - ck_pr_fence_memory(); + ck_pr_fence_strict_memory(); if (tail != ck_pr_load_ptr(&fifo->tail)) continue; @@ -112,7 +112,7 @@ ck_hp_fifo_tryenqueue_mpmc(ck_hp_record_t *record, tail = ck_pr_load_ptr(&fifo->tail); ck_hp_set(record, 0, tail); - ck_pr_fence_memory(); + ck_pr_fence_strict_memory(); if (tail != ck_pr_load_ptr(&fifo->tail)) return false; @@ -140,13 +140,13 @@ ck_hp_fifo_dequeue_mpmc(ck_hp_record_t *record, ck_pr_fence_load(); tail = ck_pr_load_ptr(&fifo->tail); ck_hp_set(record, 0, head); - ck_pr_fence_memory(); + ck_pr_fence_strict_memory(); if (head != ck_pr_load_ptr(&fifo->head)) continue; next = ck_pr_load_ptr(&head->next); ck_hp_set(record, 1, next); - ck_pr_fence_memory(); + ck_pr_fence_strict_memory(); if (head != ck_pr_load_ptr(&fifo->head)) continue; @@ -175,13 +175,13 @@ ck_hp_fifo_trydequeue_mpmc(ck_hp_record_t *record, ck_pr_fence_load(); tail = ck_pr_load_ptr(&fifo->tail); ck_hp_set(record, 0, head); - ck_pr_fence_memory(); + ck_pr_fence_strict_memory(); if (head != ck_pr_load_ptr(&fifo->head)) return NULL; next = ck_pr_load_ptr(&head->next); ck_hp_set(record, 1, next); - ck_pr_fence_memory(); + ck_pr_fence_strict_memory(); if (head != ck_pr_load_ptr(&fifo->head)) return NULL; diff --git a/include/ck_hp_stack.h b/include/ck_hp_stack.h index 412d8d5..6699d63 100644 --- a/include/ck_hp_stack.h +++ b/include/ck_hp_stack.h @@ -62,7 +62,7 @@ ck_hp_stack_pop_mpmc(ck_hp_record_t *record, struct ck_stack *target) return (NULL); ck_hp_set(record, 0, entry); - ck_pr_fence_memory(); + ck_pr_fence_strict_memory(); } while (entry != ck_pr_load_ptr(&target->head)); while (ck_pr_cas_ptr_value(&target->head, entry, entry->next, &entry) == false) { @@ -70,11 +70,11 @@ ck_hp_stack_pop_mpmc(ck_hp_record_t *record, struct ck_stack *target) return (NULL); ck_hp_set(record, 0, entry); - ck_pr_fence_memory(); + ck_pr_fence_strict_memory(); update = ck_pr_load_ptr(&target->head); while (entry != update) { ck_hp_set(record, 0, update); - ck_pr_fence_memory(); + ck_pr_fence_strict_memory(); entry = update; update = ck_pr_load_ptr(&target->head); if (update == NULL) @@ -95,7 +95,7 @@ ck_hp_stack_trypop_mpmc(ck_hp_record_t *record, struct ck_stack *target, struct return false; ck_hp_set(record, 0, entry); - ck_pr_fence_memory(); + ck_pr_fence_strict_memory(); if (entry != ck_pr_load_ptr(&target->head)) goto leave;