X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_hash%2Frte_hash.h;h=ed0673b73b6216995ac1f4e1db8a589efea3627b;hb=85e26044cb8da437428dcf3a0755ceb1cdd38426;hp=4432aef7673f4df725ff13ab79216a98435ea57d;hpb=c96b55df8eea9223ec60f99974a95eb1c305aec5;p=dpdk.git diff --git a/lib/librte_hash/rte_hash.h b/lib/librte_hash/rte_hash.h index 4432aef767..ed0673b73b 100644 --- a/lib/librte_hash/rte_hash.h +++ b/lib/librte_hash/rte_hash.h @@ -51,8 +51,6 @@ extern "C" { /** Flag to support lock free reader writer concurrency. Both single writer * and multi writer use cases are supported. - * Currently, extendable bucket table feature is not supported with - * this feature. */ #define RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY_LF 0x20 @@ -164,6 +162,23 @@ rte_hash_reset(struct rte_hash *h); int32_t rte_hash_count(const struct rte_hash *h); +/** + * @warning + * @b EXPERIMENTAL: this API may change without prior notice + * + * Return the maximum key value ID that could possibly be returned by + * rte_hash_add_key function. + * + * @param h + * Hash table to query from + * @return + * - -EINVAL if parameters are invalid + * - A value indicating the max key ID of key slots present in the table. + */ +__rte_experimental +int32_t +rte_hash_max_key_id(const struct rte_hash *h); + /** * Add a key-value pair to an existing hash table. * This operation is not multi-thread safe @@ -234,7 +249,9 @@ rte_hash_add_key_with_hash_data(const struct rte_hash *h, const void *key, * - -EINVAL if the parameters are invalid. * - -ENOSPC if there is no space in the hash for this key. * - A positive value that can be used by the caller as an offset into an - * array of user data. This value is unique for this key. + * array of user data. This value is unique for this key. This + * unique key id may be larger than the user specified entry count + * when RTE_HASH_EXTRA_FLAGS_MULTI_WRITER_ADD flag is set. */ int32_t rte_hash_add_key(const struct rte_hash *h, const void *key); @@ -256,7 +273,9 @@ rte_hash_add_key(const struct rte_hash *h, const void *key); * - -EINVAL if the parameters are invalid. * - -ENOSPC if there is no space in the hash for this key. * - A positive value that can be used by the caller as an offset into an - * array of user data. This value is unique for this key. + * array of user data. This value is unique for this key. This + * unique key ID may be larger than the user specified entry count + * when RTE_HASH_EXTRA_FLAGS_MULTI_WRITER_ADD flag is set. */ int32_t rte_hash_add_key_with_hash(const struct rte_hash *h, const void *key, hash_sig_t sig); @@ -366,7 +385,8 @@ rte_hash_get_key_with_position(const struct rte_hash *h, const int32_t position, * - 0 if freed successfully * - -EINVAL if the parameters are invalid. */ -int __rte_experimental +__rte_experimental +int rte_hash_free_key_with_position(const struct rte_hash *h, const int32_t position);