| rte_hash.h(3) | Library Functions Manual | rte_hash.h(3) |
rte_hash.h
#include <stdint.h>
#include <stddef.h>
#include <rte_rcu_qsbr.h>
struct rte_hash_parameters
struct rte_hash_rcu_config
#define RTE_HASH_ENTRIES_MAX (1 << 30)
#define RTE_HASH_NAMESIZE 32
#define RTE_HASH_LOOKUP_BULK_MAX 64
#define RTE_HASH_EXTRA_FLAGS_TRANS_MEM_SUPPORT 0x01
#define RTE_HASH_EXTRA_FLAGS_MULTI_WRITER_ADD 0x02
#define RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY 0x04
#define RTE_HASH_EXTRA_FLAGS_EXT_TABLE 0x08
#define RTE_HASH_EXTRA_FLAGS_NO_FREE_ON_DEL 0x10
#define RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY_LF 0x20
typedef uint32_t hash_sig_t
typedef uint32_t(* rte_hash_function) (const void *key, uint32_t
key_len, uint32_t init_val)
typedef int(* rte_hash_cmp_eq_t) (const void *key1, const void
*key2, size_t key_len)
typedef void(* rte_hash_free_key_data) (void *p, void *key_data)
enum rte_hash_qsbr_mode { RTE_HASH_QSBR_MODE_DQ = 0,
RTE_HASH_QSBR_MODE_SYNC }
struct rte_hash * rte_hash_create (const struct
rte_hash_parameters *params)
void rte_hash_set_cmp_func (struct rte_hash *h,
rte_hash_cmp_eq_t func)
struct rte_hash * rte_hash_find_existing (const char *name)
void rte_hash_free (struct rte_hash *h)
void rte_hash_reset (struct rte_hash *h)
int32_t rte_hash_count (const struct rte_hash *h)
int32_t rte_hash_max_key_id (const struct rte_hash *h)
int rte_hash_add_key_data (const struct rte_hash *h, const void
*key, void *data)
int32_t rte_hash_add_key_with_hash_data (const struct rte_hash
*h, const void *key, hash_sig_t sig, void *data)
int32_t rte_hash_add_key (const struct rte_hash *h, const void
*key)
int32_t rte_hash_add_key_with_hash (const struct rte_hash *h,
const void *key, hash_sig_t sig)
int32_t rte_hash_del_key (const struct rte_hash *h, const void
*key)
int32_t rte_hash_del_key_with_hash (const struct rte_hash *h,
const void *key, hash_sig_t sig)
int rte_hash_get_key_with_position (const struct rte_hash *h,
const int32_t position, void **key)
int rte_hash_free_key_with_position (const struct rte_hash *h,
const int32_t position)
int rte_hash_lookup_data (const struct rte_hash *h, const void
*key, void **data)
int rte_hash_lookup_with_hash_data (const struct rte_hash *h,
const void *key, hash_sig_t sig, void **data)
int32_t rte_hash_lookup (const struct rte_hash *h, const void
*key)
int32_t rte_hash_lookup_with_hash (const struct rte_hash *h,
const void *key, hash_sig_t sig)
hash_sig_t rte_hash_hash (const struct rte_hash *h, const
void *key)
int rte_hash_lookup_bulk_data (const struct rte_hash *h, const
void **keys, uint32_t num_keys, uint64_t *hit_mask, void *data[])
int rte_hash_lookup_with_hash_bulk (const struct rte_hash *h,
const void **keys, hash_sig_t *sig, uint32_t num_keys, int32_t
*positions)
int rte_hash_lookup_with_hash_bulk_data (const struct rte_hash
*h, const void **keys, hash_sig_t *sig, uint32_t num_keys, uint64_t
*hit_mask, void *data[])
int rte_hash_lookup_bulk (const struct rte_hash *h, const void
**keys, uint32_t num_keys, int32_t *positions)
int32_t rte_hash_iterate (const struct rte_hash *h, const void
**key, void **data, uint32_t *next)
int rte_hash_rcu_qsbr_add (struct rte_hash *h, struct
rte_hash_rcu_config *cfg)
__rte_experimental int rte_hash_rcu_qsbr_dq_reclaim (struct
rte_hash *h, unsigned int *freed, unsigned int *pending, unsigned int
*available)
RTE Hash Table
Definition in file rte_hash.h.
Maximum size of hash table that can be created.
Definition at line 24 of file rte_hash.h.
Maximum number of characters in hash name.
Definition at line 27 of file rte_hash.h.
Maximum number of keys that can be searched for using rte_hash_lookup_bulk.
Definition at line 30 of file rte_hash.h.
Enable Hardware transactional memory support.
Definition at line 34 of file rte_hash.h.
Default behavior of insertion, single writer/multi writer
Definition at line 37 of file rte_hash.h.
Flag to support reader writer concurrency
Definition at line 40 of file rte_hash.h.
Flag to indicate the extendable bucket table feature should be used
Definition at line 43 of file rte_hash.h.
Flag to disable freeing of key index on hash delete. Refer to rte_hash_del_xxx APIs for more details. This is enabled by default when RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY_LF is enabled. However, if internal RCU is enabled, freeing of internal memory/index is done on delete
Definition at line 51 of file rte_hash.h.
Flag to support lock free reader writer concurrency. Both single writer and multi writer use cases are supported.
Definition at line 56 of file rte_hash.h.
The type of hash value of a key. It should be a value of at least 32bit with fully random pattern.
Definition at line 62 of file rte_hash.h.
Type of function that can be used for calculating the hash value.
Definition at line 65 of file rte_hash.h.
Type of function used to compare the hash key.
Definition at line 69 of file rte_hash.h.
Type of function used to free data stored in the key. Required when using internal RCU to allow application to free key-data once the key is returned to the ring of free key-slots.
Definition at line 76 of file rte_hash.h.
RCU reclamation modes
Enumerator
Definition at line 93 of file rte_hash.h.
Create a new hash table.
Parameters
Returns
Set a new hash compare function other than the default one.
Note
Parameters
Find an existing hash table object and return a pointer to it.
Parameters
Returns
De-allocate all memory used by hash table.
Parameters
Reset all hash structure, by zeroing all entries. When RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY_LF is enabled, it is application's responsibility to make sure that none of the readers are referencing the hash table while calling this API.
Parameters
Return the number of keys in the hash table
Parameters
Returns
Return the maximum key value ID that could possibly be returned by rte_hash_add_key function.
Parameters
Returns
Add a key-value pair to an existing hash table. This operation is not multi-thread safe and should only be called from one thread by default. Thread safety can be enabled by setting flag during table creation. If the key exists already in the table, this API updates its value with 'data' passed in this API. It is the responsibility of the application to manage any memory associated with the old value. The readers might still be using the old value even after this API has returned.
Parameters
Returns
Add a key-value pair with a pre-computed hash value to an existing hash table. This operation is not multi-thread safe and should only be called from one thread by default. Thread safety can be enabled by setting flag during table creation. If the key exists already in the table, this API updates its value with 'data' passed in this API. It is the responsibility of the application to manage any memory associated with the old value. The readers might still be using the old value even after this API has returned.
Parameters
Returns
Add a key to an existing hash table. This operation is not multi-thread safe and should only be called from one thread by default. Thread safety can be enabled by setting flag during table creation.
Parameters
Returns
Add a key to an existing hash table. This operation is not multi-thread safe and should only be called from one thread by default. Thread safety can be enabled by setting flag during table creation.
Parameters
Returns
Remove a key from an existing hash table. This operation is not multi-thread safe and should only be called from one thread by default. Thread safety can be enabled by setting flag during table creation. If RTE_HASH_EXTRA_FLAGS_NO_FREE_ON_DEL or RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY_LF is enabled and internal RCU is NOT enabled, the key index returned by rte_hash_add_key_xxx APIs will not be freed by this API. rte_hash_free_key_with_position API must be called additionally to free the index associated with the key. rte_hash_free_key_with_position API should be called after all the readers have stopped referencing the entry corresponding to this key. RCU mechanisms could be used to determine such a state.
Parameters
Returns
Remove a key from an existing hash table. This operation is not multi-thread safe and should only be called from one thread by default. Thread safety can be enabled by setting flag during table creation. If RTE_HASH_EXTRA_FLAGS_NO_FREE_ON_DEL or RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY_LF is enabled and internal RCU is NOT enabled, the key index returned by rte_hash_add_key_xxx APIs will not be freed by this API. rte_hash_free_key_with_position API must be called additionally to free the index associated with the key. rte_hash_free_key_with_position API should be called after all the readers have stopped referencing the entry corresponding to this key. RCU mechanisms could be used to determine such a state.
Parameters
Returns
Find a key in the hash table given the position. This operation is multi-thread safe with regarding to other lookup threads. Read-write concurrency can be enabled by setting flag during table creation.
Parameters
Returns
Free a hash key in the hash table given the position of the key. This operation is not multi-thread safe and should only be called from one thread by default. Thread safety can be enabled by setting flag during table creation. If RTE_HASH_EXTRA_FLAGS_NO_FREE_ON_DEL or RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY_LF is enabled and internal RCU is NOT enabled, the key index returned by rte_hash_del_key_xxx APIs must be freed using this API. This API should be called after all the readers have stopped referencing the entry corresponding to this key. RCU mechanisms could be used to determine such a state. This API does not validate if the key is already freed.
Parameters
Returns
Find a key-value pair in the hash table. This operation is multi-thread safe with regarding to other lookup threads. Read-write concurrency can be enabled by setting flag during table creation.
Parameters
Returns
Find a key-value pair with a pre-computed hash value to an existing hash table. This operation is multi-thread safe with regarding to other lookup threads. Read-write concurrency can be enabled by setting flag during table creation.
Parameters
Returns
Find a key in the hash table. This operation is multi-thread safe with regarding to other lookup threads. Read-write concurrency can be enabled by setting flag during table creation.
Parameters
Returns
Find a key in the hash table. This operation is multi-thread safe with regarding to other lookup threads. Read-write concurrency can be enabled by setting flag during table creation.
Parameters
Returns
Calc a hash value by key. This operation is not multi-process safe.
Parameters
Returns
Find multiple keys in the hash table. This operation is multi-thread safe with regarding to other lookup threads. Read-write concurrency can be enabled by setting flag during table creation.
Parameters
Returns
Find multiple keys in the hash table with precomputed hash value array. This operation is multi-thread safe with regarding to other lookup threads. Read-write concurrency can be enabled by setting flag during table creation.
Parameters
Returns
Find multiple keys in the hash table with precomputed hash value array. This operation is multi-thread safe with regarding to other lookup threads. Read-write concurrency can be enabled by setting flag during table creation.
Parameters
Returns
Find multiple keys in the hash table. This operation is multi-thread safe with regarding to other lookup threads. Read-write concurrency can be enabled by setting flag during table creation.
Parameters
Returns
Iterate through the hash table, returning key-value pairs.
Parameters
Returns
Associate RCU QSBR variable with a Hash object. This API should be called to enable the integrated RCU QSBR support and should be called immediately after creating the Hash object.
Parameters
Returns
Reclaim resources from the defer queue. This API reclaim the resources from the defer queue if rcu is enabled.
Parameters
Returns
Generated automatically by Doxygen for DPDK from the source code.
| Version 24.11.3 | DPDK |