/* 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; }
/* dump the status of all rings on the console */ void rte_ring_list_dump(FILE *f) { const struct rte_tailq_entry *te; struct rte_ring_list *ring_list; ring_list = RTE_TAILQ_CAST(rte_ring_tailq.head, rte_ring_list); rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK); TAILQ_FOREACH(te, ring_list, next) { rte_ring_dump(f, (struct rte_ring *) te->data); }
/* 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); }
struct rte_acl_ctx * rte_acl_find_existing(const char *name) { struct rte_acl_ctx *ctx = NULL; struct rte_acl_list *acl_list; struct rte_tailq_entry *te; acl_list = RTE_TAILQ_CAST(rte_acl_tailq.head, rte_acl_list); rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK); TAILQ_FOREACH(te, acl_list, next) { ctx = (struct rte_acl_ctx *) te->data; if (strncmp(name, ctx->name, sizeof(ctx->name)) == 0) break; }
struct rte_hash * rte_hash_find_existing(const char *name) { struct rte_hash *h = NULL; struct rte_tailq_entry *te; struct rte_hash_list *hash_list; hash_list = RTE_TAILQ_CAST(rte_hash_tailq.head, rte_hash_list); rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK); TAILQ_FOREACH(te, hash_list, next) { h = (struct rte_hash *) te->data; if (strncmp(name, h->name, RTE_HASH_NAMESIZE) == 0) break; }
/* * 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 = NULL; struct rte_tailq_entry *te; struct rte_lpm_list *lpm_list; lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list); rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK); TAILQ_FOREACH(te, lpm_list, next) { l = (struct rte_lpm *) te->data; if (strncmp(name, l->name, RTE_LPM_NAMESIZE) == 0) break; }
/* * 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; }
/* dump the status of all mempools on the console */ void rte_mempool_list_dump(void) { const struct rte_mempool *mp = NULL; struct rte_mempool_list *mempool_list; if ((mempool_list = RTE_TAILQ_LOOKUP_BY_IDX(RTE_TAILQ_MEMPOOL, rte_mempool_list)) == NULL) { rte_errno = E_RTE_NO_TAILQ; return; } rte_rwlock_read_lock(RTE_EAL_MEMPOOL_RWLOCK); TAILQ_FOREACH(mp, mempool_list, next) { rte_mempool_dump(mp); }
/* * Dump all ACL contexts to the stdout. */ void rte_acl_list_dump(void) { 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; } rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK); TAILQ_FOREACH(ctx, acl_list, next) { rte_acl_dump(ctx); }
void rte_ring_list_dump(void) { const struct rte_ring *mp; struct rte_ring_list *ring_list; /* check that we have an initialised tail queue */ if ((ring_list = RTE_TAILQ_LOOKUP_BY_IDX(RTE_TAILQ_RING, rte_ring_list)) == NULL) { rte_errno = E_RTE_NO_TAILQ; return; } rte_rwlock_read_lock(RTE_EAL_TAILQ_RWLOCK); TAILQ_FOREACH(mp, ring_list, next) { rte_ring_dump(mp); }
struct rte_hash * rte_hash_find_existing(const char *name) { struct rte_hash *h = NULL; struct rte_tailq_entry *te; 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(te, hash_list, next) { h = (struct rte_hash *) te->data; if (strncmp(name, h->name, RTE_HASH_NAMESIZE) == 0) break; }
struct rte_acl_ctx * rte_acl_find_existing(const char *name) { struct rte_acl_ctx *ctx = NULL; struct rte_acl_list *acl_list; struct rte_tailq_entry *te; /* 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(te, acl_list, next) { ctx = (struct rte_acl_ctx *) te->data; if (strncmp(name, ctx->name, sizeof(ctx->name)) == 0) break; }
/* * 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; }