Scroll to navigation

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:

ht Pointer to hash table.
key Key to calculate bucket for.

Returns:

Offset into hash table.

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:

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.

Returns:

0 if ok, or negative value on error.

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:

ht Hash table to add the key to.
key Key to add to the hash table.
value Value to associate with key.

Returns:

0 if ok, or negative value on error.

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:

ht Hash table to remove the key from.
key Key to remove from the hash table.
bucket Bucket id associate with key.

Returns:

0 if ok, or negative value on error.

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:

ht Hash table to remove the key from.
key Key to remove from the hash table.

Returns:

0 if ok, or negative value on error.

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:

ht Hash table to look in.
key Key to find.
bucket Bucket associate to the key.

Returns:

The value that was associated with the key, or negative value on error.

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:

ht Hash table to look in.
key Key to find.

Returns:

The value that was associated with the key, or negative value on error.

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:

ht Hash table to delete entries in.

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:

ht Hash table to find how many entries are being used in.

Returns:

Load factor of the hash table, or negative value on error.

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:

name Name of the hash table to find

Returns:

pointer to hash table structure or NULL on error with rte_errno set appropriately. Possible rte_errno values include:
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:

params Parameters used in creation of hash table.

Returns:

Pointer to hash table structure that is used in future hash table operations, or NULL on error with rte_errno set appropriately. Possible rte_errno error values include:
  • 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:

ht Hash table to deallocate.

Author

Generated automatically by Doxygen for DPDK from the source code.

Thu May 23 2024 Version 23.11.0