> -----Original Message-----
> From: Pavan Nikhilesh Bhagavatula
> [mailto:[email protected]]
> Sent: Tuesday, December 12, 2017 2:18 AM
> To: Eads, Gage <[email protected]>;
> [email protected]; Van Haaren, Harry
> <[email protected]>; Rao, Nikhil <[email protected]>;
> [email protected]; Ma, Liang J <[email protected]>
> Cc: [email protected]
> Subject: Re: [PATCH 01/13] examples/eventdev: add Rx adapter support
> 
> On Mon, Dec 11, 2017 at 04:15:41PM +0000, Eads, Gage wrote:
> > Hi Pavan,
> >
> > </snip>
> >
> > >  static inline void
> > >  schedule_devices(unsigned int lcore_id)  {
> > >   if (fdata->rx_core[lcore_id] && (fdata->rx_single ||
> > >       rte_atomic32_cmpset(&(fdata->rx_lock), 0, 1))) {
> > > -         producer();
> > > +         rte_service_run_iter_on_app_lcore(fdata->rxadptr_service_id,
> > > 1);
> > >           rte_atomic32_clear((rte_atomic32_t *)&(fdata->rx_lock));
> > >   }
> >
> > The (rx_single || cmpset(rx_lock)) check should no longer be needed -- this
> logic is provided in rte_service_run_iter_on_app_lcore() and service_run(). 
> The
> rx_lock can be dropped in general.
> >
> 
> we could either remove the example level locks (or) keep the locks at 
> application
> level and disable them in service api through
> rte_service_run_iter_on_app_lcore(<id>, 0).
> 
> If we choose to remove example level locks we could do something like
> rte_service_run_iter_on_app_lcore(id, !rx_single)
> 

That sounds good. No need to duplicate code that the EAL provides, and it 
simplifies the example.

Thanks,
Gage

Reply via email to