> -----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

