Lines Matching refs:pointer

145 	 * The head pointer is guaranteed to always point to a stub entry.
207 struct ck_fifo_mpmc_entry *pointer;
228 stub->next.pointer = NULL;
230 fifo->head.pointer = fifo->tail.pointer = stub;
239 *garbage = fifo->head.pointer;
240 fifo->head.pointer = fifo->tail.pointer = NULL;
256 entry->next.pointer = NULL;
263 tail.pointer = ck_pr_load_ptr(&fifo->tail.pointer);
264 next.generation = ck_pr_load_ptr(&tail.pointer->next.generation);
266 next.pointer = ck_pr_load_ptr(&tail.pointer->next.pointer);
271 if (next.pointer != NULL) {
273 * If the tail pointer has an entry following it then
278 update.pointer = next.pointer;
286 update.pointer = entry;
288 if (ck_pr_cas_ptr_2(&tail.pointer->next, &next, &update) == true)
309 entry->next.pointer = NULL;
316 tail.pointer = ck_pr_load_ptr(&fifo->tail.pointer);
317 next.generation = ck_pr_load_ptr(&tail.pointer->next.generation);
319 next.pointer = ck_pr_load_ptr(&tail.pointer->next.pointer);
324 if (next.pointer != NULL) {
326 * If the tail pointer has an entry following it then
331 update.pointer = next.pointer;
340 update.pointer = entry;
342 if (ck_pr_cas_ptr_2(&tail.pointer->next, &next, &update) == false)
364 head.pointer = ck_pr_load_ptr(&fifo->head.pointer);
367 tail.pointer = ck_pr_load_ptr(&fifo->tail.pointer);
369 next.generation = ck_pr_load_ptr(&head.pointer->next.generation);
371 next.pointer = ck_pr_load_ptr(&head.pointer->next.pointer);
373 update.pointer = next.pointer;
374 if (head.pointer == tail.pointer) {
380 if (next.pointer == NULL)
383 /* Forward the tail pointer if necessary. */
392 if (next.pointer == NULL)
396 *(void **)value = ck_pr_load_ptr(&next.pointer->value);
398 /* Forward the head pointer to the next entry. */
405 *garbage = head.pointer;
418 head.pointer = ck_pr_load_ptr(&fifo->head.pointer);
422 tail.pointer = ck_pr_load_ptr(&fifo->tail.pointer);
424 next.generation = ck_pr_load_ptr(&head.pointer->next.generation);
426 next.pointer = ck_pr_load_ptr(&head.pointer->next.pointer);
428 update.pointer = next.pointer;
429 if (head.pointer == tail.pointer) {
435 if (next.pointer == NULL)
438 /* Forward the tail pointer if necessary. */
447 if (next.pointer == NULL)
451 *(void **)value = ck_pr_load_ptr(&next.pointer->value);
453 /* Forward the head pointer to the next entry. */
459 *garbage = head.pointer;
463 #define CK_FIFO_MPMC_ISEMPTY(f) ((f)->head.pointer->next.pointer == NULL)
464 #define CK_FIFO_MPMC_FIRST(f) ((f)->head.pointer->next.pointer)
465 #define CK_FIFO_MPMC_NEXT(m) ((m)->next.pointer)
472 (entry) != NULL && ((T) = (entry)->next.pointer, 1); \