> > >-----Original Message----- > >From: Stephen Hemminger [mailto:step...@networkplumber.org] > >On Fri, 28 Sep 2018 10:23:44 -0700 > >Yipeng Wang <yipeng1.w...@intel.com> wrote: > > > >> + /* clear free extendable bucket ring and memory */ > >> + if (h->ext_table_support) { > >> + memset(h->buckets_ext, 0, h->num_buckets * > >> + sizeof(struct > rte_hash_bucket)); > >> + while (rte_ring_dequeue(h->free_ext_bkts, &ptr) == 0) > >> + rte_pause(); > > > >Pause is much to short. Maybe nanosleep or sched_yield()? > > Hmm.. As a second thought, maybe we don't need any pause/sleep here? > > It is not a waiting loop and in multithreading case it is in the writer lock > so > this thread Should be the only thread operating this data structure. > > What do you think? Yes, this is a single thread use case. This is resetting the ring.
> > BTW Honnappa, in the lock free implementation, is hash_reset protected? > We should indicate in the API doc which API is supposed to be protected by > user. I do not understand the use case for hash_reset API. Why not call hash_free and hash_create? But, lock free implementation does not handle hash_reset. I will document it in the next version. > > Thanks > Yipeng