[dpdk-dev] [PATCH] hash: added rte_hash_clear that clears all keys

Bruce Richardson bruce.richardson at intel.com
Fri Mar 6 13:53:58 CET 2015


On Fri, Mar 06, 2015 at 01:02:56PM +0100, Tomas Vestelind wrote:
> Hi Bruce!
> 
> Oh yea, this patch is quite old :)
> 
> I'm currently not working actively with DPDK. If no one else wants to do it,
> I could do the update and add a unit test
> 
> /Tomas

Hi Tomas,

no pressure, since there doesn't appear to be pressing interest in this enhancement
and since we are now passed feature freeze for 2.0.
However, contributions for our next release are always welcome!

Regards,
/Bruce

> 
> On 2015-03-06 12:10, Bruce Richardson wrote:
> >On Tue, Aug 12, 2014 at 11:47:57PM +0200, Tomas Vestelind wrote:
> >>I added rte_hash_clear which clear the map from all previously added
> >>keys.
> >>
> >This patch is now quite old and needs an update to add the new API to the
> >rte_hash_version.map. A unit test for the new function would also be good to
> >have. Otherwise patch content looks ok. Is an updated V2 planned?
> >
> >Regards,
> >/Bruce
> >
> >>Signed-off-by: Tomas Vestelind <tomas.vestelind at gmail.com>
> >>---
> >>  lib/librte_hash/rte_hash.c |   14 ++++++++++++++
> >>  lib/librte_hash/rte_hash.h |   10 ++++++++++
> >>  2 files changed, 24 insertions(+)
> >>
> >>diff --git a/lib/librte_hash/rte_hash.c b/lib/librte_hash/rte_hash.c
> >>index 2108c4f..917a6c1 100644
> >>--- a/lib/librte_hash/rte_hash.c
> >>+++ b/lib/librte_hash/rte_hash.c
> >>@@ -507,3 +507,17 @@ rte_hash_keys(const struct rte_hash *h, void *keys)
> >>      return found_keys;
> >>  }
> >>+
> >>+void
> >>+rte_hash_clear(const struct rte_hash *h)
> >>+{
> >>+    unsigned int bucket, entry;
> >>+
> >>+    /* Clear all entries by invalidating each signature */
> >>+    for (bucket = 0; bucket < h->num_buckets; bucket++) {
> >>+        hash_sig_t *sig = get_sig_tbl_bucket(h, bucket);
> >>+        for (entry = 0; entry < h->bucket_entries; entry++) {
> >>+            sig[entry] = NULL_SIGNATURE;
> >>+        }
> >>+    }
> >>+}
> >>diff --git a/lib/librte_hash/rte_hash.h b/lib/librte_hash/rte_hash.h
> >>index e0fb28f..b84137e 100644
> >>--- a/lib/librte_hash/rte_hash.h
> >>+++ b/lib/librte_hash/rte_hash.h
> >>@@ -318,6 +318,16 @@ rte_hash_lookup_bulk(const struct rte_hash *h, const void **keys,
> >>   */
> >>  unsigned int
> >>  rte_hash_keys(const struct rte_hash *h, void *keys);
> >>+
> >>+/**
> >>+ * Clear all keys. This operation is not multi-thread safe and should only be
> >>+ * called from one thread.
> >>+ *
> >>+ * @param h
> >>+ *   Hash table to clear.
> >>+ */
> >>+void
> >>+rte_hash_clear(const struct rte_hash *h);
> >>  #ifdef __cplusplus
> >>  }
> >>  #endif
> >>-- 
> >>1.7.10.4
> >>
> >
> >
> 
> 


More information about the dev mailing list