ring: add reset function for flushing
Currently, the flush is done by dequeuing the ring in a while loop. It is much simpler to flush the queue by resetting the head and tail indices. Signed-off-by: Gavin Hu <gavin.hu@arm.com> Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Acked-by: Olivier Matz <olivier.matz@6wind.com>
This commit is contained in:
parent
46418d25f7
commit
272d87b01b
@ -63,6 +63,13 @@ rte_ring_get_memsize(unsigned count)
|
||||
return sz;
|
||||
}
|
||||
|
||||
void
|
||||
rte_ring_reset(struct rte_ring *r)
|
||||
{
|
||||
r->prod.head = r->cons.head = 0;
|
||||
r->prod.tail = r->cons.tail = 0;
|
||||
}
|
||||
|
||||
int
|
||||
rte_ring_init(struct rte_ring *r, const char *name, unsigned count,
|
||||
unsigned flags)
|
||||
|
@ -668,6 +668,23 @@ rte_ring_dequeue(struct rte_ring *r, void **obj_p)
|
||||
return rte_ring_dequeue_bulk(r, obj_p, 1, NULL) ? 0 : -ENOENT;
|
||||
}
|
||||
|
||||
/**
|
||||
* Flush a ring.
|
||||
*
|
||||
* This function flush all the elements in a ring
|
||||
*
|
||||
* @b EXPERIMENTAL: this API may change without prior notice
|
||||
*
|
||||
* @warning
|
||||
* Make sure the ring is not in use while calling this function.
|
||||
*
|
||||
* @param r
|
||||
* A pointer to the ring structure.
|
||||
*/
|
||||
__rte_experimental
|
||||
void
|
||||
rte_ring_reset(struct rte_ring *r);
|
||||
|
||||
/**
|
||||
* Return the number of entries in a ring.
|
||||
*
|
||||
|
@ -17,3 +17,10 @@ DPDK_2.2 {
|
||||
rte_ring_free;
|
||||
|
||||
} DPDK_2.0;
|
||||
|
||||
EXPERIMENTAL {
|
||||
global:
|
||||
|
||||
rte_ring_reset;
|
||||
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user