X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_hash%2Frte_fbk_hash.c;h=55c9f358319c01adf544cce3d8b6b9280128fe49;hb=af35e12191f5817c38b37b0ea1142bcd19e30c74;hp=c342c0da62619dfaf61d91c56b3d1c880b029e47;hpb=ff708facfcbf42f3dcb3c62d82ecd93e7b8c2506;p=dpdk.git diff --git a/lib/librte_hash/rte_fbk_hash.c b/lib/librte_hash/rte_fbk_hash.c index c342c0da62..55c9f35831 100644 --- a/lib/librte_hash/rte_fbk_hash.c +++ b/lib/librte_hash/rte_fbk_hash.c @@ -55,6 +55,11 @@ TAILQ_HEAD(rte_fbk_hash_list, rte_tailq_entry); +static struct rte_tailq_elem rte_fbk_hash_tailq = { + .name = "RTE_FBK_HASH", +}; +EAL_REGISTER_TAILQ(rte_fbk_hash_tailq) + /** * Performs a lookup for an existing hash table, and returns a pointer to * the table if found. @@ -72,13 +77,8 @@ rte_fbk_hash_find_existing(const char *name) struct rte_tailq_entry *te; struct rte_fbk_hash_list *fbk_hash_list; - /* check that we have an initialised tail queue */ - if ((fbk_hash_list = - RTE_TAILQ_LOOKUP_BY_IDX(RTE_TAILQ_FBK_HASH, - rte_fbk_hash_list)) == NULL) { - rte_errno = E_RTE_NO_TAILQ; - return NULL; - } + fbk_hash_list = RTE_TAILQ_CAST(rte_fbk_hash_tailq.head, + rte_fbk_hash_list); rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK); TAILQ_FOREACH(te, fbk_hash_list, next) { @@ -115,13 +115,8 @@ rte_fbk_hash_create(const struct rte_fbk_hash_params *params) uint32_t i; struct rte_fbk_hash_list *fbk_hash_list; - /* check that we have an initialised tail queue */ - if ((fbk_hash_list = - RTE_TAILQ_LOOKUP_BY_IDX(RTE_TAILQ_FBK_HASH, - rte_fbk_hash_list)) == NULL) { - rte_errno = E_RTE_NO_TAILQ; - return NULL; - } + fbk_hash_list = RTE_TAILQ_CAST(rte_fbk_hash_tailq.head, + rte_fbk_hash_list); /* Error checking of parameters. */ if ((!rte_is_power_of_2(params->entries)) || @@ -145,8 +140,11 @@ rte_fbk_hash_create(const struct rte_fbk_hash_params *params) if (strncmp(params->name, ht->name, RTE_FBK_HASH_NAMESIZE) == 0) break; } - if (te != NULL) + ht = NULL; + if (te != NULL) { + rte_errno = EEXIST; goto exit; + } te = rte_zmalloc("FBK_HASH_TAILQ_ENTRY", sizeof(*te), 0); if (te == NULL) { @@ -208,13 +206,8 @@ rte_fbk_hash_free(struct rte_fbk_hash_table *ht) if (ht == NULL) return; - /* check that we have an initialised tail queue */ - if ((fbk_hash_list = - RTE_TAILQ_LOOKUP_BY_IDX(RTE_TAILQ_FBK_HASH, - rte_fbk_hash_list)) == NULL) { - rte_errno = E_RTE_NO_TAILQ; - return; - } + fbk_hash_list = RTE_TAILQ_CAST(rte_fbk_hash_tailq.head, + rte_fbk_hash_list); rte_rwlock_write_lock(RTE_EAL_TAILQ_RWLOCK); @@ -236,4 +229,3 @@ rte_fbk_hash_free(struct rte_fbk_hash_table *ht) rte_free(ht); rte_free(te); } -