DPDK
18.11.11
|
#include <stdint.h>
#include <errno.h>
#include <sys/queue.h>
#include <string.h>
#include <rte_config.h>
#include <rte_hash_crc.h>
#include <rte_jhash.h>
Go to the source code of this file.
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) |
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.
#define RTE_FBK_HASH_INIT_VAL_DEFAULT 0xFFFFFFFF |
Initialising value used when calculating hash.
Definition at line 34 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 38 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 41 of file rte_fbk_hash.h.
#define RTE_FBK_HASH_NAMESIZE 32 |
Maximum size of string for naming the hash.
Definition at line 44 of file rte_fbk_hash.h.
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 47 of file rte_fbk_hash.h.
|
inlinestatic |
Find the offset into hash table of the bucket containing a particular key.
ht | Pointer to hash table. |
key | Key to calculate bucket for. |
Definition at line 96 of file rte_fbk_hash.h.
|
inlinestatic |
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.
ht | Hash table to add the key to. |
key | Key to add to the hash table. |
value | Value to associate with key. |
bucket | Bucket to associate with key. |
Definition at line 119 of file rte_fbk_hash.h.
|
inlinestatic |
Add a key to an existing hash table. This operation is not multi-thread safe and should only be called from one thread.
ht | Hash table to add the key to. |
key | Key to add to the hash table. |
value | Value to associate with key. |
Definition at line 164 of file rte_fbk_hash.h.
|
inlinestatic |
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.
ht | Hash table to remove the key from. |
key | Key to remove from the hash table. |
bucket | Bucket id associate with key. |
Definition at line 186 of file rte_fbk_hash.h.
|
inlinestatic |
Remove a key from an existing hash table. This operation is not multi-thread safe and should only be called from one thread.
ht | Hash table to remove the key from. |
key | Key to remove from the hash table. |
Definition at line 229 of file rte_fbk_hash.h.
|
inlinestatic |
Find a key in the hash table with a given bucketid. This operation is multi-thread safe.
ht | Hash table to look in. |
key | Key to find. |
bucket | Bucket associate to the key. |
Definition at line 249 of file rte_fbk_hash.h.
|
inlinestatic |
Find a key in the hash table. This operation is multi-thread safe.
ht | Hash table to look in. |
key | Key to find. |
Definition at line 279 of file rte_fbk_hash.h.
|
inlinestatic |
Delete all entries in a hash table. This operation is not multi-thread safe and should only be called from one thread.
ht | Hash table to delete entries in. |
Definition at line 293 of file rte_fbk_hash.h.
|
inlinestatic |
Find what fraction of entries are being used.
ht | Hash table to find how many entries are being used in. |
Definition at line 308 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.
name | Name of the hash table to find |
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.
params | Parameters used in creation of hash table. |
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
ht | Hash table to deallocate. |