Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
rte_hash.h(3)			      DPDK			   rte_hash.h(3)

NAME
     rte_hash.h

SYNOPSIS
     #include <stdint.h>
     #include <stddef.h>
     #include <rte_common.h>
     #include <rte_rcu_qsbr.h>

   Data Structures
     struct rte_hash_parameters
     struct rte_hash_rcu_config

   Macros
     #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

   Typedefs
     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)

   Enumerations
     enum      rte_hash_qsbr_mode      {      RTE_HASH_QSBR_MODE_DQ	=     0,
	 RTE_HASH_QSBR_MODE_SYNC }

   Functions
     void rte_hash_free (struct rte_hash *h)
     struct  rte_hash  *  rte_hash_create  (const   struct   rte_hash_parameters
	 *params) __rte_malloc __rte_dealloc(rte_hash_free
     struct   rte_hash	 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_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)

Detailed Description
     RTE Hash Table

     Definition in file rte_hash.h.

Macro Definition Documentation
   #define RTE_HASH_ENTRIES_MAX   (1 << 30)
     Maximum size of hash table that can be created.

     Definition at line 25 of file rte_hash.h.

   #define RTE_HASH_NAMESIZE   32
     Maximum number of characters in hash name.

     Definition at line 28 of file rte_hash.h.

   #define RTE_HASH_LOOKUP_BULK_MAX   64
     Maximum number of keys that can be searched for using rte_hash_lookup_bulk.

     Definition at line 31 of file rte_hash.h.

   #define RTE_HASH_EXTRA_FLAGS_TRANS_MEM_SUPPORT   0x01
     Enable Hardware transactional memory support.

     Definition at line 35 of file rte_hash.h.

   #define RTE_HASH_EXTRA_FLAGS_MULTI_WRITER_ADD   0x02
     Default behavior of insertion, single writer/multi writer

     Definition at line 38 of file rte_hash.h.

   #define RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY	 0x04
     Flag to support reader writer concurrency

     Definition at line 41 of file rte_hash.h.

   #define RTE_HASH_EXTRA_FLAGS_EXT_TABLE   0x08
     Flag to indicate the extendable bucket table feature should be used

     Definition at line 44 of file rte_hash.h.

   #define RTE_HASH_EXTRA_FLAGS_NO_FREE_ON_DEL	 0x10
     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 52 of file rte_hash.h.

   #define RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY_LF   0x20
     Flag to support lock free reader writer concurrency. Both single writer and
     multi writer use cases are supported.

     Definition at line 57 of file rte_hash.h.

Typedef Documentation
   typedef uint32_t hash_sig_t
     The  type	of  hash  value of a key. It should be a value of at least 32bit
     with fully random pattern.

     Definition at line 63 of file rte_hash.h.

   typedef uint32_t(* rte_hash_function) (const  void  *key,  uint32_t	key_len,
     uint32_t init_val)
     Type of function that can be used for calculating the hash value.

     Definition at line 66 of file rte_hash.h.

   typedef  int(* rte_hash_cmp_eq_t) (const void *key1, const void *key2, size_t
     key_len)
     Type of function used to compare the hash key.

     Definition at line 70 of file rte_hash.h.

   typedef void(* rte_hash_free_key_data) (void *p, void *key_data)
     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 77 of file rte_hash.h.

Enumeration Type Documentation
   enum rte_hash_qsbr_mode
     RCU reclamation modes

     Enumerator

     RTE_HASH_QSBR_MODE_DQ
	    Create defer queue for reclaim.

     RTE_HASH_QSBR_MODE_SYNC
	    Use blocking mode reclaim. No defer queue created.

     Definition at line 94 of file rte_hash.h.

Function Documentation
   void rte_hash_free (struct rte_hash * h)
     De-allocate all memory used by hash table.

     Parameters
	 h Hash table to free, if NULL, the function does nothing.

   struct rte_hash * rte_hash_create (const struct rte_hash_parameters * params)

     Create a new hash table.

     Parameters
	 params Parameters used to create and initialise the hash table.

     Returns
	 Pointer to hash table structure that is used in future hash table oper-
	 ations,  or  NULL  on error, with error code set in rte_errno. Possible
	 rte_errno errors include:

	 * E_RTE_NO_CONFIG - function could not get pointer to rte_config struc-
	   ture

	 * E_RTE_SECONDARY - function was called from a  secondary  process  in-
	   stance

	 * ENOENT - missing entry

	 * EINVAL - invalid parameter 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

   struct   rte_hash   void   rte_hash_set_cmp_func   (struct	rte_hash   *  h,
     rte_hash_cmp_eq_t func)
     Set a new hash compare function other than the default one.

     Note
	 Function pointer does not work with multi-process, so do not use it  in
	 multi-process mode.

     Parameters
	 h Hash table for which the function is to be changed
	 func New compare function

   struct rte_hash * rte_hash_find_existing (const char * name)
     Find an existing hash table object and return a pointer to it.

     Parameters
	 name Name of the hash table as passed to rte_hash_create()

     Returns
	 Pointer  to  hash  table or NULL if object not found with rte_errno set
	 appropriately. Possible rte_errno values include:

	 * ENOENT - value not available for return

   void rte_hash_reset (struct rte_hash * h)
     Reset all	hash  structure,  by  zeroing  all  entries.  When  RTE_HASH_EX-
     TRA_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
	 h Hash table to reset

   int32_t rte_hash_count (const struct rte_hash * h)
     Return the number of keys in the hash table

     Parameters
	 h Hash table to query from

     Returns

	 * -EINVAL if parameters are invalid

	 * A value indicating how many keys were inserted in the table.

   int32_t rte_hash_max_key_id (const struct rte_hash * h)
     Return  the  maximum  key	value  ID  that  could	possibly  be returned by
     rte_hash_add_key function.

     Parameters
	 h Hash table to query from

     Returns

	 * -EINVAL if parameters are invalid

	 * A value indicating the max key ID of key slots present in the table.

   int rte_hash_add_key_data (const struct rte_hash * h, const void * key,  void
     * data)
     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
	 h Hash table to add the key to.
	 key Key to add to the hash table.
	 data Data to add to the hash table.

     Returns

	 * 0 if added successfully

	 * -EINVAL if the parameters are invalid.

	 * -ENOSPC if there is no space in the hash for this key.

   int32_t  rte_hash_add_key_with_hash_data  (const  struct  rte_hash * h, const
     void * key, hash_sig_t sig, void * data)
     Add a key-value pair with a pre-computed hash value to an existing hash ta-
     ble. 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
	 h Hash table to add the key to.
	 key Key to add to the hash table.
	 sig Precomputed hash value for 'key'
	 data Data to add to the hash table.

     Returns

	 * 0 if added successfully

	 * -EINVAL if the parameters are invalid.

	 * -ENOSPC if there is no space in the hash for this key.

   int32_t rte_hash_add_key (const struct rte_hash * h, const void * key)
     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
	 h Hash table to add the key to.
	 key Key to add to the hash table.

     Returns

	 * -EINVAL if the parameters are invalid.

	 * -ENOSPC if there is no space in the hash for this key.

	 * A non-negative value that can be used by the caller as an offset into
	   an 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)
     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
	 h Hash table to add the key to.
	 key Key to add to the hash table.
	 sig Precomputed hash value for 'key'.

     Returns

	 * -EINVAL if the parameters are invalid.

	 * -ENOSPC if there is no space in the hash for this key.

	 * A non-negative value that can be used by the caller as an offset into
	   an 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_del_key (const struct rte_hash * h, const void * key)
     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_CONCUR-
     RENCY_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  corre-
     sponding  to  this  key.  RCU  mechanisms could be used to determine such a
     state.

     Parameters
	 h Hash table to remove the key from.
	 key Key to remove from the hash table.

     Returns

	 * -EINVAL if the parameters are invalid.

	 * -ENOENT if the key is not found.

	 * A non-negative value that can be used by the caller as an offset into
	   an array of user data. This value is unique for this key, and is  the
	   same value that was returned when the key was added.

   int32_t  rte_hash_del_key_with_hash	(const struct rte_hash * h, const void *
     key, hash_sig_t sig)
     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_CONCUR-
     RENCY_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  corre-
     sponding  to  this  key.  RCU  mechanisms could be used to determine such a
     state.

     Parameters
	 h Hash table to remove the key from.
	 key Key to remove from the hash table.
	 sig Precomputed hash value for 'key'.

     Returns

	 * -EINVAL if the parameters are invalid.

	 * -ENOENT if the key is not found.

	 * A non-negative value that can be used by the caller as an offset into
	   an array of user data. This value is unique for this key, and is  the
	   same value that was returned when the key was added.

   int	rte_hash_get_key_with_position (const struct rte_hash * h, const int32_t
     position, void ** key)
     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
	 h Hash table to get the key from.
	 position Position returned when the key was inserted.
	 key Output containing a pointer to the key

     Returns

	 * 0 if retrieved successfully

	 * -EINVAL if the parameters are invalid.

	 * -ENOENT if no valid key is found in the given position.

   int rte_hash_free_key_with_position (const struct rte_hash * h, const int32_t
     position)
     Free a hash key in the hash table given the position of the key. This oper-
     ation 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  cre-
     ation.	If     RTE_HASH_EXTRA_FLAGS_NO_FREE_ON_DEL    or    RTE_HASH_EX-
     TRA_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 referenc-
     ing  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
	 h Hash table to free the key from.
	 position Position returned when the key was deleted.

     Returns

	 * 0 if freed successfully

	 * -EINVAL if the parameters are invalid.

   int	rte_hash_lookup_data  (const struct rte_hash * h, const void * key, void
     ** data)
     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
	 h Hash table to look in.
	 key Key to find.
	 data Output with pointer to data returned from the hash table.

     Returns

	 * A non-negative value that can be used by the caller as an offset into
	   an array of user data. This value is unique for this key, and is  the
	   same value that was returned when the key was added.

	 * -EINVAL if the parameters are invalid.

	 * -ENOENT if the key is not found.

   int	rte_hash_lookup_with_hash_data	(const struct rte_hash * h, const void *
     key, hash_sig_t sig, void ** data)
     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
	 h Hash table to look in.
	 key Key to find.
	 sig Precomputed hash value for 'key'
	 data Output with pointer to data returned from the hash table.

     Returns

	 * A non-negative value that can be used by the caller as an offset into
	   an array of user data. This value is unique for this key, and is  the
	   same value that was returned when the key was added.

	 * -EINVAL if the parameters are invalid.

	 * -ENOENT if the key is not found.

   int32_t rte_hash_lookup (const struct rte_hash * h, const void * key)
     Find  a key in the hash table. This operation is multi-thread safe with re-
     garding to other lookup threads. Read-write concurrency can be  enabled  by
     setting flag during table creation.

     Parameters
	 h Hash table to look in.
	 key Key to find.

     Returns

	 * -EINVAL if the parameters are invalid.

	 * -ENOENT if the key is not found.

	 * A non-negative value that can be used by the caller as an offset into
	   an  array of user data. This value is unique for this key, and is the
	   same value that was returned when the key was added.

   int32_t rte_hash_lookup_with_hash (const struct rte_hash * h,  const  void  *
     key, hash_sig_t sig)
     Find  a key in the hash table. This operation is multi-thread safe with re-
     garding to other lookup threads. Read-write concurrency can be  enabled  by
     setting flag during table creation.

     Parameters
	 h Hash table to look in.
	 key Key to find.
	 sig Precomputed hash value for 'key'.

     Returns

	 * -EINVAL if the parameters are invalid.

	 * -ENOENT if the key is not found.

	 * A non-negative value that can be used by the caller as an offset into
	   an  array of user data. This value is unique for this key, and is the
	   same value that was returned when the key was added.

   hash_sig_t rte_hash_hash (const struct rte_hash * h, const void * key)
     Calc a hash value by key. This operation is not multi-process safe.

     Parameters
	 h Hash table to look in.
	 key Key to find.

     Returns

	 * hash value

   int rte_hash_lookup_bulk_data (const struct rte_hash * h, const void ** keys,
     uint32_t num_keys, uint64_t * hit_mask, void * data[])
     Find multiple keys in the hash table. This operation is  multi-thread  safe
     with  regarding  to other lookup threads. Read-write concurrency can be en-
     abled by setting flag during table creation.

     Parameters
	 h Hash table to look in.
	 keys A pointer to a list of keys to look for.
	 num_keys  How	many  keys   are   in	the   keys   list   (less   than
	 RTE_HASH_LOOKUP_BULK_MAX).
	 hit_mask Output containing a bitmask with all successful lookups.
	 data  Output  containing array of data returned from all the successful
	 lookups.

     Returns
	 -EINVAL if there's an error, otherwise number of successful lookups.

   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)
     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  cre-
     ation.

     Parameters
	 h Hash table to look in.
	 keys A pointer to a list of keys to look for.
	 sig A pointer to a list of precomputed hash values for keys.
	 num_keys   How   many	 keys	are   in   the	 keys  list  (less  than
	 RTE_HASH_LOOKUP_BULK_MAX).
	 positions Output containing a list of values, corresponding to the list
	 of keys that can be used by the caller as an offset into  an  array  of
	 user  data. These values are unique for each key, and are the same val-
	 ues that were returned when each key was added. If a key  in  the  list
	 was not found, then -ENOENT will be the value.

     Returns
	 -EINVAL if there's an error, otherwise 0.

   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[])
     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  cre-
     ation.

     Parameters
	 h Hash table to look in.
	 keys A pointer to a list of keys to look for.
	 sig A pointer to a list of precomputed hash values for keys.
	 num_keys   How   many	 keys	are   in   the	 keys  list  (less  than
	 RTE_HASH_LOOKUP_BULK_MAX).
	 hit_mask Output containing a bitmask with all successful lookups.
	 data Output containing array of data returned from all  the  successful
	 lookups.

     Returns
	 -EINVAL if there's an error, otherwise number of successful lookups.

   int	rte_hash_lookup_bulk  (const  struct  rte_hash	* h, const void ** keys,
     uint32_t num_keys, int32_t * positions)
     Find multiple keys in the hash table. This operation is  multi-thread  safe
     with  regarding  to other lookup threads. Read-write concurrency can be en-
     abled by setting flag during table creation.

     Parameters
	 h Hash table to look in.
	 keys A pointer to a list of keys to look for.
	 num_keys  How	many  keys   are   in	the   keys   list   (less   than
	 RTE_HASH_LOOKUP_BULK_MAX).
	 positions Output containing a list of values, corresponding to the list
	 of  keys  that  can be used by the caller as an offset into an array of
	 user data. These values are unique for each key, and are the same  val-
	 ues  that  were  returned when each key was added. If a key in the list
	 was not found, then -ENOENT will be the value.

     Returns
	 -EINVAL if there's an error, otherwise 0.

   int32_t rte_hash_iterate (const struct rte_hash * h, const void ** key,  void
     ** data, uint32_t * next)
     Iterate through the hash table, returning key-value pairs.

     Parameters
	 h Hash table to iterate
	 key Output containing the key where current iterator was pointing at
	 data  Output  containing  the data associated with key. Returns NULL if
	 data was not stored.
	 next Pointer to iterator. Should be 0 to start iterating the  hash  ta-
	 ble. Iterator is incremented after each call of this function.

     Returns
	 Position where key was stored, if successful.

	 * -EINVAL if the parameters are invalid.

	 * -ENOENT if end of the hash table.

   int	rte_hash_rcu_qsbr_add (struct rte_hash * h, struct rte_hash_rcu_config *
     cfg)
     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
	 h the hash object to add RCU QSBR
	 cfg RCU QSBR configuration

     Returns
	 On success - 0 On error - 1 with error code set in rte_errno.	Possible
	 rte_errno codes are:

	 * EINVAL - invalid pointer

	 * EEXIST - already added QSBR

	 * ENOMEM - memory allocation failure

   __rte_experimental int rte_hash_rcu_qsbr_dq_reclaim (struct rte_hash * h, un-
     signed int * freed, unsigned int * pending, unsigned int * available)
     Reclaim resources from the defer queue. This API reclaim the resources from
     the defer queue if rcu is enabled.

     Parameters
	 h The hash object to reclaim resources.
	 freed Number of resources that were freed.
	 pending  Number  of  resources  pending on the defer queue. This number
	 might not be accurate if multi-thread safety is configured.
	 available Number of resources that can be added  to  the  defer  queue.
	 This number might not be accurate if multi-thread safety is configured.

     Returns
	 On  success - 0 On error - 1 with error code set in rte_errno. Possible
	 rte_errno codes are:

	 * EINVAL - invalid pointer

Author
     Generated automatically by Doxygen for DPDK from the source code.

Version 25.11.0 		 Thu Aug 27 2026		   rte_hash.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=RTE_HASH_ENTRIES_MAX&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help