rte_fbk_hash.h(3) | DPDK | rte_fbk_hash.h(3) |
NAME¶
rte_fbk_hash.h
SYNOPSIS¶
#include <stdint.h>
#include <errno.h>
#include <string.h>
#include <rte_hash_crc.h>
#include <rte_jhash.h>
Data Structures¶
struct rte_fbk_hash_params
union rte_fbk_hash_entry
struct rte_fbk_hash_table
Macros¶
#define RTE_FBK_HASH_INIT_VAL_DEFAULT 0xFFFFFFFF
#define RTE_FBK_HASH_ENTRIES_MAX (1 << 20)
#define RTE_FBK_HASH_ENTRIES_PER_BUCKET_MAX 256
#define RTE_FBK_HASH_NAMESIZE 32
Typedefs¶
typedef uint32_t(* rte_fbk_hash_fn) (uint32_t key,
uint32_t init_val)
Functions¶
static uint32_t rte_fbk_hash_get_bucket (const struct
rte_fbk_hash_table *ht, uint32_t key)
static int rte_fbk_hash_add_key_with_bucket (struct
rte_fbk_hash_table *ht, uint32_t key, uint16_t value, uint32_t
bucket)
static int rte_fbk_hash_add_key (struct rte_fbk_hash_table *ht,
uint32_t key, uint16_t value)
static int rte_fbk_hash_delete_key_with_bucket (struct
rte_fbk_hash_table *ht, uint32_t key, uint32_t bucket)
static int rte_fbk_hash_delete_key (struct rte_fbk_hash_table
*ht, uint32_t key)
static int rte_fbk_hash_lookup_with_bucket (const struct
rte_fbk_hash_table *ht, uint32_t key, uint32_t bucket)
static int rte_fbk_hash_lookup (const struct rte_fbk_hash_table
*ht, uint32_t key)
static void rte_fbk_hash_clear_all (struct rte_fbk_hash_table
*ht)
static double rte_fbk_hash_get_load_factor (struct
rte_fbk_hash_table *ht)
struct rte_fbk_hash_table * rte_fbk_hash_find_existing (const
char *name)
struct rte_fbk_hash_table * rte_fbk_hash_create (const struct
rte_fbk_hash_params *params)
void rte_fbk_hash_free (struct rte_fbk_hash_table *ht)
Detailed Description¶
This is a hash table implementation for four byte keys (fbk).
Note that the return value of the add function should always be checked as, if a bucket is full, the key is not added even if there is space in other buckets. This keeps the lookup function very simple and therefore fast.
Definition in file rte_fbk_hash.h.
Macro Definition Documentation¶
#define RTE_FBK_HASH_INIT_VAL_DEFAULT 0xFFFFFFFF¶
Initialising value used when calculating hash.
Definition at line 32 of file rte_fbk_hash.h.
#define RTE_FBK_HASH_ENTRIES_MAX (1 << 20)¶
The maximum number of entries in the hash table that is supported.
Definition at line 36 of file rte_fbk_hash.h.
#define RTE_FBK_HASH_ENTRIES_PER_BUCKET_MAX 256¶
The maximum number of entries in each bucket that is supported.
Definition at line 39 of file rte_fbk_hash.h.
#define RTE_FBK_HASH_NAMESIZE 32¶
Maximum size of string for naming the hash.
Definition at line 42 of file rte_fbk_hash.h.
Typedef Documentation¶
typedef uint32_t(* rte_fbk_hash_fn) (uint32_t key, uint32_t init_val)¶
Type of function that can be used for calculating the hash value.
Definition at line 45 of file rte_fbk_hash.h.
Function Documentation¶
static uint32_t rte_fbk_hash_get_bucket (const struct rte_fbk_hash_table * ht, uint32_t key) [inline], [static]¶
Find the offset into hash table of the bucket containing a particular key.
Parameters:
key Key to calculate bucket for.
Returns:
Definition at line 94 of file rte_fbk_hash.h.
static int rte_fbk_hash_add_key_with_bucket (struct rte_fbk_hash_table * ht, uint32_t key, uint16_t value, uint32_t bucket) [inline], [static]¶
Add a key to an existing hash table with bucket id. This operation is not multi-thread safe and should only be called from one thread.
Parameters:
key Key to add to the hash table.
value Value to associate with key.
bucket Bucket to associate with key.
Returns:
Definition at line 117 of file rte_fbk_hash.h.
static int rte_fbk_hash_add_key (struct rte_fbk_hash_table * ht, uint32_t key, uint16_t value) [inline], [static]¶
Add a key to an existing hash table. This operation is not multi-thread safe and should only be called from one thread.
Parameters:
key Key to add to the hash table.
value Value to associate with key.
Returns:
Definition at line 162 of file rte_fbk_hash.h.
static int rte_fbk_hash_delete_key_with_bucket (struct rte_fbk_hash_table * ht, uint32_t key, uint32_t bucket) [inline], [static]¶
Remove a key with a given bucket id from an existing hash table. This operation is not multi-thread safe and should only be called from one thread.
Parameters:
key Key to remove from the hash table.
bucket Bucket id associate with key.
Returns:
Definition at line 184 of file rte_fbk_hash.h.
static int rte_fbk_hash_delete_key (struct rte_fbk_hash_table * ht, uint32_t key) [inline], [static]¶
Remove a key from an existing hash table. This operation is not multi-thread safe and should only be called from one thread.
Parameters:
key Key to remove from the hash table.
Returns:
Definition at line 227 of file rte_fbk_hash.h.
static int rte_fbk_hash_lookup_with_bucket (const struct rte_fbk_hash_table * ht, uint32_t key, uint32_t bucket) [inline], [static]¶
Find a key in the hash table with a given bucketid. This operation is multi-thread safe.
Parameters:
key Key to find.
bucket Bucket associate to the key.
Returns:
Definition at line 247 of file rte_fbk_hash.h.
static int rte_fbk_hash_lookup (const struct rte_fbk_hash_table * ht, uint32_t key) [inline], [static]¶
Find a key in the hash table. This operation is multi-thread safe.
Parameters:
key Key to find.
Returns:
Definition at line 277 of file rte_fbk_hash.h.
static void rte_fbk_hash_clear_all (struct rte_fbk_hash_table * ht) [inline], [static]¶
Delete all entries in a hash table. This operation is not multi-thread safe and should only be called from one thread.
Parameters:
Definition at line 291 of file rte_fbk_hash.h.
static double rte_fbk_hash_get_load_factor (struct rte_fbk_hash_table * ht) [inline], [static]¶
Find what fraction of entries are being used.
Parameters:
Returns:
Definition at line 306 of file rte_fbk_hash.h.
struct rte_fbk_hash_table* rte_fbk_hash_find_existing (const char * name)¶
Performs a lookup for an existing hash table, and returns a pointer to the table if found.
Parameters:
Returns:
- •
- ENOENT - required entry not available to return.
struct rte_fbk_hash_table* rte_fbk_hash_create (const struct rte_fbk_hash_params * params)¶
Create a new hash table for use with four byte keys.
Parameters:
Returns:
- E_RTE_NO_CONFIG - function could not get pointer to rte_config structure
- E_RTE_SECONDARY - function was called from a secondary process instance
- EINVAL - invalid parameter value passed to function
- ENOSPC - the maximum number of memzones has already been allocated
- EEXIST - a memzone with the same name already exists
- ENOMEM - no appropriate memory area found in which to create memzone
void rte_fbk_hash_free (struct rte_fbk_hash_table * ht)¶
Free all memory used by a hash table. Has no effect on hash tables allocated in memory zones
Parameters:
Author¶
Generated automatically by Doxygen for DPDK from the source code.
Thu May 23 2024 | Version 23.11.0 |