[RFC 0/1] ring: add callback infrastructire to ring library
Morten Brørup
mb at smartsharesystems.com
Thu Mar 23 12:55:23 CET 2023
> From: Rory Sexton [mailto:rory.sexton at 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
>
More information about the dev
mailing list