RCU_DONE_TAIL
.tails[RCU_DONE_TAIL] = &n.head, \
for (i = RCU_DONE_TAIL; i < RCU_CBLIST_NSEGS; i++)
&rsclp->head != READ_ONCE(rsclp->tails[RCU_DONE_TAIL]);
!rcu_segcblist_restempty(rsclp, RCU_DONE_TAIL);
return *rsclp->tails[RCU_DONE_TAIL];
for (i = RCU_NEXT_TAIL; i > RCU_DONE_TAIL; i--)
rclp->len = rcu_segcblist_get_seglen(rsclp, RCU_DONE_TAIL);
WRITE_ONCE(rsclp->head, *rsclp->tails[RCU_DONE_TAIL]);
WRITE_ONCE(*rsclp->tails[RCU_DONE_TAIL], NULL);
rclp->tail = rsclp->tails[RCU_DONE_TAIL];
for (i = RCU_CBLIST_NSEGS - 1; i >= RCU_DONE_TAIL; i--)
if (rsclp->tails[i] == rsclp->tails[RCU_DONE_TAIL])
rcu_segcblist_set_seglen(rsclp, RCU_DONE_TAIL, 0);
*rclp->tail = *rsclp->tails[RCU_DONE_TAIL];
WRITE_ONCE(*rsclp->tails[RCU_DONE_TAIL], NULL);
for (i = RCU_DONE_TAIL + 1; i < RCU_CBLIST_NSEGS; i++) {
WRITE_ONCE(rsclp->tails[i], rsclp->tails[RCU_DONE_TAIL]);
rcu_segcblist_add_seglen(rsclp, RCU_DONE_TAIL, rclp->len);
for (i = RCU_DONE_TAIL; i < RCU_CBLIST_NSEGS; i++)
if (rcu_segcblist_restempty(rsclp, RCU_DONE_TAIL))
WRITE_ONCE(rsclp->tails[RCU_DONE_TAIL], rsclp->tails[i]);
rcu_segcblist_move_seglen(rsclp, i, RCU_DONE_TAIL);
WRITE_ONCE(rsclp->tails[j], rsclp->tails[RCU_DONE_TAIL]);
if (rcu_segcblist_restempty(rsclp, RCU_DONE_TAIL))
for (i = RCU_NEXT_READY_TAIL; i > RCU_DONE_TAIL; i--)
if (seg == RCU_DONE_TAIL)
return &rsclp->head == rsclp->tails[RCU_DONE_TAIL];
pending = rcu_segcblist_get_seglen(&rdp->cblist, RCU_DONE_TAIL);
sprintf(bufd, "%ld", rsclp->seglen[RCU_DONE_TAIL]);
rcu_segcblist_segempty(rsclp, RCU_DONE_TAIL) ? "" : bufd,