static void kmsg_ring_consume()

in ncrx/nctx.c [172:196]


static void kmsg_ring_consume(struct kmsg_ring *ring, uint64_t upto_seq)
{
	uint64_t tail_seq = kmsg_ring_tail_seq(ring);
	int tail = ring->tail;

	if (!ring->head_seq || upto_seq < tail_seq)
		return;

	if (upto_seq >= ring->head_seq)
		upto_seq = ring->head_seq - 1;

	while (tail_seq <= upto_seq) {
		struct kmsg_slot *slot = &ring->slots[ring->head];

		free(slot->msg);
		memset(slot, 0, sizeof(*slot));
		tail_seq++;
		tail = (tail + 1) % ring->nr_slots;

		/* made progress, reset emergency tx */
		ring->emg_tx_intv = 0;
	}

	ring->tail = tail;
}