Lines Matching refs:current_head
250 uint64_t current_head, old_head;
253 current_head = old_head;
254 p_atomic_set(last_next, (uint32_t)current_head); /* Index is the bottom 32 bits */
255 uint64_t new_head = free_list_head(current_head, items[0]);
256 old_head = p_atomic_cmpxchg(&fl->head, current_head, new_head);
257 } while (old_head != current_head);
263 uint64_t current_head;
265 current_head = p_atomic_read(&fl->head);
267 if ((uint32_t)current_head == fl->sentinel)
270 uint32_t head_idx = current_head; /* Index is the bottom 32 bits */
273 uint64_t new_head = free_list_head(current_head, p_atomic_read(head_next));
274 uint64_t old_head = p_atomic_cmpxchg(&fl->head, current_head, new_head);
275 if (old_head == current_head)
277 current_head = old_head;
284 uint64_t current_head;
286 current_head = p_atomic_read(&fl->head);
288 if ((uint32_t)current_head == fl->sentinel)
291 uint32_t head_idx = current_head; /* Index is the bottom 32 bits */
294 uint64_t new_head = free_list_head(current_head, p_atomic_read(head_next));
295 uint64_t old_head = p_atomic_cmpxchg(&fl->head, current_head, new_head);
296 if (old_head == current_head)
298 current_head = old_head;