> From: Rory Sexton [mailto:rory.sex...@intel.com]
> Sent: Thursday, 23 March 2023 12.38
> 
> This is an RFC proposing the addition of a callback infrastructure to the ring
> library, particularly in the ring dequeue functions, but they could also be
> added to the enqueue functions if desired.
> 
> Callbacks in the ring dequeue functions would be beneficial for a number of
> reasons including but not limited to the following:
> - would allow users to register specific functions to be called on dequeue of
> a
>   ring avoiding the need to call the function within application code on
> several
>   threads reading from said ring.
> - would mirror the callback functionality offered by the ethdev library for
>   threads that read exclusively from a ring and process packets based off
> that,
>   thus allowing for the same threads to read from either a NIC i/f or directly
>   from a ring without needing a different codepath.
> 
> The addition of callbacks wouldn't impact the reading of rings by more than 1
> cycle when no callbacks are registered. They could also additionally be
> compiled
> in/out as desired to give more confidence in maintaining performance when
> callbacks are not required.

On the condition that they can be omitted at build time, as you mention here, I 
don't mind having more callbacks.

> 
> This RFC is to give a feel for what the additional APIs would be and how they
> would be integrated within the ring dequeue functions. As such only function
> declarations are present. If there is a willingness within the community to
> add
> callback infrastructure to the ring library I will implement further code.

I like the idea that these callbacks mimic the ethdev callbacks, so if 
proceeding with this, I think that both enqueue and dequeue callbacks should be 
added. The ethdev callbacks share one RTE_ETHDEV_RXTX_CALLBACKS define, so the 
ring callbacks can probably do the same.

> 
> Rory Sexton (1):
>   ring: add infrastructure to allow callbacks within the ring library
> 
>  lib/ring/rte_ring.h      | 133 ++++++++++++++++++++++++++++++++++++++-
>  lib/ring/rte_ring_core.h |   3 +
>  2 files changed, 135 insertions(+), 1 deletion(-)
> 
> --
> 2.34.1
> 

Reply via email to