diff --git a/include/ck_stack.h b/include/ck_stack.h index 87be0e2..32dd897 100644 --- a/include/ck_stack.h +++ b/include/ck_stack.h @@ -27,7 +27,6 @@ #ifndef _CK_STACK_H #define _CK_STACK_H -#include #include #include #include @@ -55,15 +54,12 @@ CK_CC_INLINE static void ck_stack_push_upmc(struct ck_stack *target, struct ck_stack_entry *entry) { struct ck_stack_entry *stack; - ck_backoff_t backoff = CK_BACKOFF_INITIALIZER; stack = ck_pr_load_ptr(&target->head); ck_pr_store_ptr(&entry->next, stack); - while (ck_pr_cas_ptr_value(&target->head, stack, entry, &stack) == false) { + while (ck_pr_cas_ptr_value(&target->head, stack, entry, &stack) == false) ck_pr_store_ptr(&entry->next, stack); - ck_backoff_eb(&backoff); - } return; } @@ -78,17 +74,14 @@ CK_CC_INLINE static struct ck_stack_entry * ck_stack_pop_upmc(struct ck_stack *target) { struct ck_stack_entry *entry; - ck_backoff_t backoff = CK_BACKOFF_INITIALIZER; entry = ck_pr_load_ptr(&target->head); if (entry == NULL) return (NULL); while (ck_pr_cas_ptr_value(&target->head, entry, entry->next, &entry) == false) { - if (ck_pr_load_ptr(&entry) == NULL) + if (entry == NULL) break; - - ck_backoff_eb(&backoff); } return (entry); @@ -133,7 +126,6 @@ ck_stack_push_mpmc(struct ck_stack *target, struct ck_stack_entry *entry) CK_CC_INLINE static struct ck_stack_entry * ck_stack_pop_mpmc(struct ck_stack *target) { - ck_backoff_t backoff = CK_BACKOFF_INITIALIZER; struct ck_stack original, update; original.generation = ck_pr_load_ptr(&target->generation); @@ -148,8 +140,6 @@ ck_stack_pop_mpmc(struct ck_stack *target) if (original.head == NULL) return (NULL); - ck_backoff_eb(&backoff); - ck_pr_store_ptr(&update.generation, original.generation + 1); ck_pr_store_ptr(&update.head, original.head->next); } @@ -248,7 +238,6 @@ ck_stack_init(struct ck_stack *stack) stack->generation = 0; ck_pr_fence_store(); - return; }