Hi, On 03/18/2016 11:18 AM, Bruce Richardson wrote: >>> diff --git a/lib/librte_ring/rte_ring.h b/lib/librte_ring/rte_ring.h >>> index 943c97c..eb45e41 100644 >>> --- a/lib/librte_ring/rte_ring.h >>> +++ b/lib/librte_ring/rte_ring.h >>> @@ -431,6 +431,11 @@ __rte_ring_mp_do_enqueue(struct rte_ring *r, void * >>> const *obj_table, >>> uint32_t mask = r->prod.mask; >>> int ret; >>> >>> + /* Avoid the unnecessary cmpset operation below, which is also >>> + * potentially harmful when n equals 0. */ >>> + if (n == 0) >>> >> >> What about using unlikely here? >> > > Unless there is a measurable performance increase by adding in likely/unlikely > I'd suggest avoiding it's use. In general, likely/unlikely should only be used > for things like catestrophic errors because the penalty for taking the > unlikely > leg of the code can be quite severe. For normal stuff, where the code nearly > always goes one way in the branch but occasionally goes the other, the > hardware > branch predictors generally do a good enough job.
Do you mean using likely/unlikely could be worst than not using it in this case? To me, using unlikely here is not a bad idea: it shows to the compiler and to the reader of the code that is case is not the usual case. Olivier