[dpdk-dev] [PATCH v1 1/2] lib/ring: add enqueue-dequeue callabck

Stephen Hemminger stephen at networkplumber.org
Thu Jun 6 21:49:27 CEST 2019

On Fri,  7 Jun 2019 00:03:54 +0530
Vipin Varghese <vipin.varghese at intel.com> wrote:

> Add callback event handler for enqueue dequeue operation on ring.
> The pre-enqueue and post-dequeue operation on ring is selected to
> invoke user callback handler.
> Signed-off-by: Vipin Varghese <vipin.varghese at intel.com>
> ---

What is the use case for this? Rings are one of the most used elements
of DPDK and anything like this will have performance impact.

And as DPDK goes to more of distribution model, all features have to be

Also, this looks like a problem:
+struct rte_ring_callback {
+	TAILQ_ENTRY(rte_ring_callback) next; /* Callbacks list */
+	rte_ring_cb_fn cb_fn; /* Callback address */
+	void *cb_arg; /* Parameter for callback */
+	uint32_t active; /* Callback is executing */

The active element is likely updated in one thread and queried in another
it needs to be volatile, or better yet an atomic to ensure memory ordering.

More information about the dev mailing list