[dpdk-dev] [PATCH] rte_delay_us can be replaced with user function
Jozef Martiniak -X (jozmarti - PANTHEON TECHNOLOGIES at Cisco)
jozmarti at cisco.com
Tue Jul 19 15:52:38 CEST 2016
Hi,
On Tue, 2016-07-19 at 15:21 +0200, Thomas Monjalon wrote:
Hi,
>
> 2016-07-19 14:42, jozmarti at cisco.com:
> > when running single-core, some drivers tend to call rte_delay_us for a
> > long time, and that is causing packet drops.
> > Attached patch introduces 2 new functions:
> >
> > void rte_delay_us_callback_register(void(*userfunc)(unsigned));
> > void rte_delay_us_callback_unregister(void);
> >
> > First one replaces rte_delay_us with userfunc and second one restores
> > original rte_delay_us.
>
> I think we could avoid the function unregister by exporting the
> default implementation (let's say rte_delay_us_block).
>
I think register/unregister is the standard way how to handle callbacks. Unregister func is now "empty" but can be extended in the future.
> > +REGISTER_TEST_COMMAND(user_delay_us, test_user_delay_us);
>
> Thanks for providing an unit test.
>
>
> > --- a/lib/librte_eal/common/eal_common_timer.c
> > +++ b/lib/librte_eal/common/eal_common_timer.c
> > void
> > rte_delay_us(unsigned us)
> > {
> > + if (unlikely(rte_delay_us_override != NULL))
> > + {
> > + rte_delay_us_override(us);
> > + return;
> > + }
>
> Why not always call the registered callback and initialize it
> to the default implementation (maybe using a constructor)?
>
I wanted to touch as few things as possible with this patch.
More information about the dev
mailing list