Lines Matching +full:t +full:- +full:head

2  * Copyright 2009-2015 Samy Al Bahra.
41 struct ck_stack_entry *head; member
58 stack = ck_pr_load_ptr(&target->head); in ck_stack_push_upmc()
59 entry->next = stack; in ck_stack_push_upmc()
62 while (ck_pr_cas_ptr_value(&target->head, stack, entry, &stack) == false) { in ck_stack_push_upmc()
63 entry->next = stack; in ck_stack_push_upmc()
82 stack = ck_pr_load_ptr(&target->head); in ck_stack_trypush_upmc()
83 entry->next = stack; in ck_stack_trypush_upmc()
86 return ck_pr_cas_ptr(&target->head, stack, entry); in ck_stack_trypush_upmc()
100 entry = ck_pr_load_ptr(&target->head); in ck_stack_pop_upmc()
105 next = entry->next; in ck_stack_pop_upmc()
106 while (ck_pr_cas_ptr_value(&target->head, entry, next, &entry) == false) { in ck_stack_pop_upmc()
111 next = entry->next; in ck_stack_pop_upmc()
131 entry = ck_pr_load_ptr(&target->head); in ck_stack_trypop_upmc()
136 if (ck_pr_cas_ptr(&target->head, entry, entry->next) == true) { in ck_stack_trypop_upmc()
155 entry = ck_pr_fas_ptr(&target->head, NULL); in ck_stack_batch_pop_upmc()
199 original.generation = ck_pr_load_ptr(&target->generation); in ck_stack_pop_mpmc()
201 original.head = ck_pr_load_ptr(&target->head); in ck_stack_pop_mpmc()
202 if (original.head == NULL) in ck_stack_pop_mpmc()
209 update.head = original.head->next; in ck_stack_pop_mpmc()
212 if (original.head == NULL) in ck_stack_pop_mpmc()
219 update.head = original.head->next; in ck_stack_pop_mpmc()
222 return original.head; in ck_stack_pop_mpmc()
233 original.generation = ck_pr_load_ptr(&target->generation); in ck_stack_trypop_mpmc()
235 original.head = ck_pr_load_ptr(&target->head); in ck_stack_trypop_mpmc()
236 if (original.head == NULL) in ck_stack_trypop_mpmc()
241 update.head = original.head->next; in ck_stack_trypop_mpmc()
244 *r = original.head; in ck_stack_trypop_mpmc()
277 entry->next = NULL; in ck_stack_push_mpnc()
279 stack = ck_pr_fas_ptr(&target->head, entry); in ck_stack_push_mpnc()
280 ck_pr_store_ptr(&entry->next, stack); in ck_stack_push_mpnc()
294 entry->next = target->head; in ck_stack_push_spnc()
295 target->head = entry; in ck_stack_push_spnc()
307 if (target->head == NULL) in ck_stack_pop_npsc()
310 n = target->head; in ck_stack_pop_npsc()
311 target->head = n->next; in ck_stack_pop_npsc()
324 n = target->head; in ck_stack_batch_pop_npsc()
325 target->head = NULL; in ck_stack_batch_pop_npsc()
337 stack->head = NULL; in ck_stack_init()
338 stack->generation = NULL; in ck_stack_init()
343 #define CK_STACK_CONTAINER(T, M, N) CK_CC_CONTAINER(ck_stack_entry_t, T, M, N) argument
345 #define CK_STACK_ISEMPTY(m) ((m)->head == NULL)
346 #define CK_STACK_FIRST(s) ((s)->head)
347 #define CK_STACK_NEXT(m) ((m)->next)
352 #define CK_STACK_FOREACH_SAFE(stack, entry, T) \ argument
354 (entry) != NULL && ((T) = (entry)->next, 1); \
355 (entry) = (T))