> -----Original Message----- > From: Honnappa Nagarahalli <honnappa.nagaraha...@arm.com> > Sent: Tuesday, April 2, 2019 12:24 AM > To: Phil Yang (Arm Technology China) <phil.y...@arm.com>; dev@dpdk.org; > tho...@monjalon.net > Cc: david.h...@intel.com; reshma.pat...@intel.com; Gavin Hu (Arm > Technology China) <gavin...@arm.com>; Phil Yang (Arm Technology China) > <phil.y...@arm.com>; nd <n...@arm.com>; Honnappa Nagarahalli > <honnappa.nagaraha...@arm.com>; nd <n...@arm.com> > Subject: RE: [PATCH v2 2/3] test/distributor: replace sync builtins with > atomic > builtins > > > > > diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c > > index 98919ec..ddab08d 100644 > > --- a/app/test/test_distributor.c > > +++ b/app/test/test_distributor.c > > @@ -62,9 +62,14 @@ handle_work(void *arg) > > struct worker_params *wp = arg; > > struct rte_distributor *db = wp->dist; > > unsigned int count = 0, num = 0; > > - unsigned int id = __sync_fetch_and_add(&worker_idx, 1); > > int i; > > > > +#ifdef RTE_USE_C11_MEM_MODEL > > + unsigned int id = __atomic_fetch_add(&worker_idx, 1, > > +__ATOMIC_RELAXED); #else > > + unsigned int id = __sync_fetch_and_add(&worker_idx, 1); #endif > > + > I suggest we remove the conditional compilation and just keep the > __atomic_xxx calls as this is test code. More over the distributor library > does > not have a C11 version of the library (assuming that using __atomic_xxx does > not impact performance on other platforms negatively). This applies to other > instances in this patch. Hi Honnappa,
Thanks for your comments. Agree. I don't think __atomic_xxx will cause performance degradation on other platforms. Remove the conditional compilation will make the code more clear. Thanks, Phil Yang > > > for (i = 0; i < 8; i++) > > buf[i] = NULL; > > num = rte_distributor_get_pkt(db, id, buf, buf, num); @@ -270,7 > > +275,12 @@ handle_work_with_free_mbufs(void *arg) > > unsigned int count = 0; > > unsigned int i; > > unsigned int num = 0; > > + > > +#ifdef RTE_USE_C11_MEM_MODEL > > + unsigned int id = __atomic_fetch_add(&worker_idx, 1, > > +__ATOMIC_RELAXED); #else > > unsigned int id = __sync_fetch_and_add(&worker_idx, 1); > > +#endif > > > > for (i = 0; i < 8; i++) > > buf[i] = NULL; > > @@ -343,7 +353,13 @@ handle_work_for_shutdown_test(void *arg) > > unsigned int total = 0; > > unsigned int i; > > unsigned int returned = 0; > > + > > +#ifdef RTE_USE_C11_MEM_MODEL > > + const unsigned int id = __atomic_fetch_add(&worker_idx, 1, > > + __ATOMIC_RELAXED); > > +#else > > const unsigned int id = __sync_fetch_and_add(&worker_idx, 1); > > +#endif > > > > num = rte_distributor_get_pkt(d, id, buf, buf, num); > > > > diff --git a/app/test/test_distributor_perf.c > > b/app/test/test_distributor_perf.c > > index edf1998..9367460 100644 > > --- a/app/test/test_distributor_perf.c > > +++ b/app/test/test_distributor_perf.c > > @@ -111,9 +111,14 @@ handle_work(void *arg) > > unsigned int count = 0; > > unsigned int num = 0; > > int i; > > - unsigned int id = __sync_fetch_and_add(&worker_idx, 1); > > struct rte_mbuf *buf[8] __rte_cache_aligned; > > > > +#ifdef RTE_USE_C11_MEM_MODEL > > + unsigned int id = __atomic_fetch_add(&worker_idx, 1, > > +__ATOMIC_RELAXED); #else > > + unsigned int id = __sync_fetch_and_add(&worker_idx, 1); #endif > > + > > for (i = 0; i < 8; i++) > > buf[i] = NULL; > > > > -- > > 2.7.4