in ncrx/libncrx.c [330:349]
static void retire_tail(struct ncrx *ncrx)
{
int ntail = (ncrx->tail + 1) % ncrx->p.nr_slots;
struct ncrx_slot *slot = &ncrx->slots[ncrx->tail];
struct ncrx_slot *nslot = &ncrx->slots[ntail];
if (slot->msg) {
msg_list_append(slot->msg, &ncrx->retired_list);
slot->msg = NULL;
}
list_del(&slot->hole_node); /* free slot is never a hole */
ncrx->tail = ntail;
/*
* Activities of past msgs are considered activities for newer ones
* too. This prevents oos interval verdicts from flipping as
* sequence progresses.
*/
nslot->timestamp = max(slot->timestamp, nslot->timestamp);
}