/* Dump all reserved memory zones on console */ void rte_memzone_dump(FILE *f) { struct rte_mem_config *mcfg; unsigned i = 0; /* get pointer to global configuration */ mcfg = rte_eal_get_configuration()->mem_config; rte_rwlock_read_lock(&mcfg->mlock); /* dump all zones */ for (i=0; i<RTE_MAX_MEMZONE; i++) { if (mcfg->memzone[i].addr == NULL) break; fprintf(f, "Zone %u: name:<%s>, phys:0x%"PRIx64", len:0x%zx" ", virt:%p, socket_id:%"PRId32", flags:%"PRIx32"\n", i, mcfg->memzone[i].name, mcfg->memzone[i].phys_addr, mcfg->memzone[i].len, mcfg->memzone[i].addr, mcfg->memzone[i].socket_id, mcfg->memzone[i].flags); } rte_rwlock_read_unlock(&mcfg->mlock); }
sflow_socket_t* sflow_socket_lookup(sflow_key_t* key) { sflow_key_dump("find socket for key", key); rte_rwlock_read_lock(&sflow_hash_lock); int32_t socket_id = rte_hash_lookup(sflow_hash, key); rte_rwlock_read_unlock(&sflow_hash_lock); sflow_socket_t* socket = ((int32_t) socket_id) < 0 ? NULL : sflow_sockets[socket_id]; if (socket) { RTE_LOG(DEBUG, L3L4, "found socket at id: %u\n", socket_id); } return socket; }
/* Walk all reserved memory zones */ void rte_memzone_walk(void (*func)(const struct rte_memzone *, void *), void *arg) { struct rte_mem_config *mcfg; unsigned i; mcfg = rte_eal_get_configuration()->mem_config; rte_rwlock_read_lock(&mcfg->mlock); for (i=0; i<RTE_MAX_MEMZONE; i++) { if (mcfg->memzone[i].addr != NULL) (*func)(&mcfg->memzone[i], arg); } rte_rwlock_read_unlock(&mcfg->mlock); }
/* * Lookup for the memzone identified by the given name */ const struct rte_memzone * rte_memzone_lookup(const char *name) { struct rte_mem_config *mcfg; const struct rte_memzone *memzone = NULL; mcfg = rte_eal_get_configuration()->mem_config; rte_rwlock_read_lock(&mcfg->mlock); memzone = memzone_lookup_thread_unsafe(name); rte_rwlock_read_unlock(&mcfg->mlock); return memzone; }
struct rte_hash * rte_hash_find_existing(const char *name) { struct rte_hash *h; struct rte_hash_list *hash_list; /* check that we have an initialised tail queue */ if ((hash_list = RTE_TAILQ_LOOKUP_BY_IDX(RTE_TAILQ_HASH, rte_hash_list)) == NULL) { rte_errno = E_RTE_NO_TAILQ; return NULL; } rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK); TAILQ_FOREACH(h, hash_list, next) { if (strncmp(name, h->name, RTE_HASH_NAMESIZE) == 0) break; } rte_rwlock_read_unlock(RTE_EAL_TAILQ_RWLOCK); if (h == NULL) rte_errno = ENOENT; return h; }
/* * Find an existing lpm table and return a pointer to it. */ struct rte_lpm * rte_lpm_find_existing(const char *name) { struct rte_lpm *l; struct rte_lpm_list *lpm_list; /* check that we have an initialised tail queue */ if ((lpm_list = RTE_TAILQ_LOOKUP_BY_IDX(RTE_TAILQ_LPM, rte_lpm_list)) == NULL) { rte_errno = E_RTE_NO_TAILQ; return NULL; } rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK); TAILQ_FOREACH(l, lpm_list, next) { if (strncmp(name, l->name, RTE_LPM_NAMESIZE) == 0) break; } rte_rwlock_read_unlock(RTE_EAL_TAILQ_RWLOCK); if (l == NULL) rte_errno = ENOENT; return l; }
struct rte_acl_ctx * rte_acl_find_existing(const char *name) { struct rte_acl_ctx *ctx; struct rte_acl_list *acl_list; /* check that we have an initialised tail queue */ acl_list = RTE_TAILQ_LOOKUP_BY_IDX(RTE_TAILQ_ACL, rte_acl_list); if (acl_list == NULL) { rte_errno = E_RTE_NO_TAILQ; return NULL; } rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK); TAILQ_FOREACH(ctx, acl_list, next) { if (strncmp(name, ctx->name, sizeof(ctx->name)) == 0) break; } rte_rwlock_read_unlock(RTE_EAL_TAILQ_RWLOCK); if (ctx == NULL) rte_errno = ENOENT; return ctx; }