hash: don't use memzone for allocations

Signed-off-by: Intel
This commit is contained in:
Intel 2012-12-20 00:00:00 +01:00 committed by Thomas Monjalon
parent de7212b822
commit 1651e2166b
7 changed files with 3 additions and 39 deletions

View File

@ -199,7 +199,6 @@ CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
# #
CONFIG_RTE_LIBRTE_HASH=y CONFIG_RTE_LIBRTE_HASH=y
CONFIG_RTE_LIBRTE_HASH_DEBUG=n CONFIG_RTE_LIBRTE_HASH_DEBUG=n
CONFIG_RTE_LIBRTE_HASH_USE_MEMZONE=n
# #
# Compile librte_lpm # Compile librte_lpm

View File

@ -199,7 +199,6 @@ CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
# #
CONFIG_RTE_LIBRTE_HASH=y CONFIG_RTE_LIBRTE_HASH=y
CONFIG_RTE_LIBRTE_HASH_DEBUG=n CONFIG_RTE_LIBRTE_HASH_DEBUG=n
CONFIG_RTE_LIBRTE_HASH_USE_MEMZONE=n
# #
# Compile librte_lpm # Compile librte_lpm

View File

@ -199,7 +199,6 @@ CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
# #
CONFIG_RTE_LIBRTE_HASH=y CONFIG_RTE_LIBRTE_HASH=y
CONFIG_RTE_LIBRTE_HASH_DEBUG=n CONFIG_RTE_LIBRTE_HASH_DEBUG=n
CONFIG_RTE_LIBRTE_HASH_USE_MEMZONE=n
# #
# Compile librte_lpm # Compile librte_lpm

View File

@ -199,7 +199,6 @@ CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
# #
CONFIG_RTE_LIBRTE_HASH=y CONFIG_RTE_LIBRTE_HASH=y
CONFIG_RTE_LIBRTE_HASH_DEBUG=n CONFIG_RTE_LIBRTE_HASH_DEBUG=n
CONFIG_RTE_LIBRTE_HASH_USE_MEMZONE=n
# #
# Compile librte_lpm # Compile librte_lpm

View File

@ -138,17 +138,9 @@ rte_fbk_hash_create(const struct rte_fbk_hash_params *params)
return NULL; return NULL;
/* Allocate memory for table. */ /* Allocate memory for table. */
#if defined(RTE_LIBRTE_HASH_USE_MEMZONE)
const struct rte_memzone *mz;
mz = rte_memzone_reserve(hash_name, mem_size, params->socket_id, 0);
if (mz == NULL)
return NULL;
ht = (struct rte_fbk_hash_table *)mz->addr;
#else
ht = (struct rte_fbk_hash_table *)rte_malloc(hash_name, mem_size, 0); ht = (struct rte_fbk_hash_table *)rte_malloc(hash_name, mem_size, 0);
if (ht == NULL) if (ht == NULL)
return NULL; return NULL;
#endif
memset(ht, 0, mem_size); memset(ht, 0, mem_size);
/* Set up hash table context. */ /* Set up hash table context. */
@ -187,12 +179,7 @@ rte_fbk_hash_free(struct rte_fbk_hash_table *ht)
if (ht == NULL) if (ht == NULL)
return; return;
/* No way to deallocate memzones - but can de-allocate from malloc */
#if !defined(RTE_LIBRTE_HASH_USE_MEMZONE)
RTE_EAL_TAILQ_REMOVE(RTE_TAILQ_FBK_HASH, rte_fbk_hash_list, ht); RTE_EAL_TAILQ_REMOVE(RTE_TAILQ_FBK_HASH, rte_fbk_hash_list, ht);
rte_free(ht); rte_free(ht);
#endif
RTE_SET_USED(ht);
return;
} }

View File

@ -201,7 +201,7 @@ rte_hash_create(const struct rte_hash_parameters *params)
CACHE_LINE_SIZE); CACHE_LINE_SIZE);
key_tbl_size = align_size(num_buckets * key_size * key_tbl_size = align_size(num_buckets * key_size *
params->bucket_entries, CACHE_LINE_SIZE); params->bucket_entries, CACHE_LINE_SIZE);
/* Total memory required for hash context */ /* Total memory required for hash context */
mem_size = hash_tbl_size + sig_tbl_size + key_tbl_size; mem_size = hash_tbl_size + sig_tbl_size + key_tbl_size;
@ -213,24 +213,12 @@ rte_hash_create(const struct rte_hash_parameters *params)
if (h != NULL) if (h != NULL)
return NULL; return NULL;
/* Allocate as a memzone, or in normal memory space */
#if defined(RTE_LIBRTE_HASH_USE_MEMZONE)
const struct rte_memzone *mz;
mz = rte_memzone_reserve(hash_name, mem_size, params->socket_id, 0);
if (mz == NULL) {
RTE_LOG(ERR, HASH, "memzone reservation failed\n");
return NULL;
}
memset(mz->addr, 0, mem_size);
h = (struct rte_hash *)mz->addr;
#else
h = (struct rte_hash *)rte_zmalloc(hash_name, mem_size, h = (struct rte_hash *)rte_zmalloc(hash_name, mem_size,
CACHE_LINE_SIZE); CACHE_LINE_SIZE);
if (h == NULL) { if (h == NULL) {
RTE_LOG(ERR, HASH, "memory allocation failed\n"); RTE_LOG(ERR, HASH, "memory allocation failed\n");
return NULL; return NULL;
} }
#endif
/* Setup hash context */ /* Setup hash context */
rte_snprintf(h->name, sizeof(h->name), "%s", params->name); rte_snprintf(h->name, sizeof(h->name), "%s", params->name);
@ -258,12 +246,8 @@ rte_hash_free(struct rte_hash *h)
if (h == NULL) if (h == NULL)
return; return;
#if !defined(RTE_LIBRTE_HASH_USE_MEMZONE)
RTE_EAL_TAILQ_REMOVE(RTE_TAILQ_HASH, rte_hash_list, h); RTE_EAL_TAILQ_REMOVE(RTE_TAILQ_HASH, rte_hash_list, h);
rte_free(h); rte_free(h);
#endif
/* No way to deallocate memzones */
return;
} }
int32_t int32_t

View File

@ -109,9 +109,7 @@ struct rte_hash {
}; };
/** /**
* Create a new hash table. If RTE_LIBRTE_HASH_USE_MEMZONE is defined, then * Create a new hash table.
* the hash table is allocated in a memzone on a specific NUMA socket ID,
* otherwise it is allocated in the heap.
* *
* @param params * @param params
* Parameters used to create and initialise the hash table. * Parameters used to create and initialise the hash table.
@ -146,8 +144,7 @@ struct rte_hash *
rte_hash_find_existing(const char *name); rte_hash_find_existing(const char *name);
/** /**
* De-allocate all memory used by hash table. If RTE_LIBRTE_HASH_USE_MEMZONE * De-allocate all memory used by hash table.
* is defined, then this has no effect.
* @param h * @param h
* Hash table to free * Hash table to free
*/ */