From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomas Vestelind Subject: Re: [PATCH] hash: added rte_hash_clear that clears all keys Date: Fri, 06 Mar 2015 13:02:56 +0100 Message-ID: <54F99770.5040201@gmail.com> References: <20150306111025.GA9352@bricha3-MOBL3> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: dev-VfR2kkLFssw@public.gmane.org To: Bruce Richardson Return-path: In-Reply-To: <20150306111025.GA9352@bricha3-MOBL3> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" 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 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 >> --- >> 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 >> > >