X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_distributor%2Frte_distributor.c;h=f3f778c9028971ea1d663893cecd135ea5abf947;hb=a2348166ea186506d45b61d5073d16ad974e79bb;hp=84e78bb34e90ed6c60687e33893fd4e5ec7f282c;hpb=873a61c7526be06f45d8d709a7c56d10cc06ab34;p=dpdk.git diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c index 84e78bb34e..f3f778c902 100644 --- a/lib/librte_distributor/rte_distributor.c +++ b/lib/librte_distributor/rte_distributor.c @@ -115,6 +115,11 @@ struct rte_distributor { TAILQ_HEAD(rte_distributor_list, rte_distributor); +static struct rte_tailq_elem rte_distributor_tailq = { + .name = "RTE_DISTRIBUTOR", +}; +EAL_REGISTER_TAILQ(rte_distributor_tailq) + /**** APIs called by workers ****/ void @@ -460,14 +465,6 @@ rte_distributor_create(const char *name, return NULL; } - /* check that we have an initialised tail queue */ - distributor_list = RTE_TAILQ_LOOKUP_BY_IDX(RTE_TAILQ_DISTRIBUTOR, - rte_distributor_list); - if (distributor_list == NULL) { - rte_errno = E_RTE_NO_TAILQ; - return NULL; - } - snprintf(mz_name, sizeof(mz_name), RTE_DISTRIB_PREFIX"%s", name); mz = rte_memzone_reserve(mz_name, sizeof(*d), socket_id, NO_FLAGS); if (mz == NULL) { @@ -479,6 +476,9 @@ rte_distributor_create(const char *name, snprintf(d->name, sizeof(d->name), "%s", name); d->num_workers = num_workers; + distributor_list = RTE_TAILQ_CAST(rte_distributor_tailq.head, + rte_distributor_list); + rte_rwlock_write_lock(RTE_EAL_TAILQ_RWLOCK); TAILQ_INSERT_TAIL(distributor_list, d, next); rte_rwlock_write_unlock(RTE_EAL_TAILQ_RWLOCK);