From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 1C5A12BA6 for ; Thu, 30 Jun 2016 14:49:42 +0200 (CEST) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP; 30 Jun 2016 05:49:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,552,1459839600"; d="scan'208";a="837992889" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by orsmga003.jf.intel.com with ESMTP; 30 Jun 2016 05:49:40 -0700 Received: from sivswdev01.ir.intel.com (sivswdev01.ir.intel.com [10.237.217.45]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id u5UCndR2007917; Thu, 30 Jun 2016 13:49:39 +0100 Received: from sivswdev01.ir.intel.com (localhost [127.0.0.1]) by sivswdev01.ir.intel.com with ESMTP id u5UCnd7n003979; Thu, 30 Jun 2016 13:49:39 +0100 Received: (from bricha3@localhost) by sivswdev01.ir.intel.com with id u5UCndPA003974; Thu, 30 Jun 2016 13:49:39 +0100 From: Bruce Richardson To: dev@dpdk.org Cc: Thomas Monjalon , olivier.matz@6wind.com, keith.wiles@intel.com, Panu Matilainen , Bruce Richardson Date: Thu, 30 Jun 2016 13:49:25 +0100 Message-Id: <1467290965-3797-1-git-send-email-bruce.richardson@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1467208504-13029-1-git-send-email-bruce.richardson@intel.com> References: <1467208504-13029-1-git-send-email-bruce.richardson@intel.com> Subject: [dpdk-dev] [PATCH v3] mempool: rename functions with confusing names X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Jun 2016 12:49:43 -0000 The mempool_count and mempool_free_count behaved contrary to what their names suggested. The free_count function actually returned the number of elements that were allocated from the pool, not the number unallocated as the name implied. Fix this by introducing two new functions to replace the old ones, * rte_mempool_avail_count to replace rte_mempool_count * rte_mempool_in_use_count to replace rte_mempool_free_count In this patch, the new functions are added, and the old ones are marked as deprecated. All apps and examples that use the old functions are updated to use the new functions. Fixes: af75078fece3 ("first public release") Signed-off-by: Bruce Richardson --- v3 changes: * made rte_mempool_in_use_count a regular, not static inline, function * fixed alphabetical ordering of functions in the map file v2 changes * original patch used allocated/unallocated for new functions. Change those to in_use/avail. --- app/test/test_cryptodev.c | 6 ++--- app/test/test_cryptodev_perf.c | 6 ++--- app/test/test_mbuf.c | 4 +-- app/test/test_mempool.c | 4 +-- app/test/test_mempool_perf.c | 2 +- doc/guides/rel_notes/deprecation.rst | 6 +++++ drivers/net/qede/qede_rxtx.c | 4 +-- examples/multi_process/l2fwd_fork/main.c | 3 ++- examples/qos_sched/main.c | 2 -- lib/librte_mempool/rte_mempool.c | 17 +++++++++++-- lib/librte_mempool/rte_mempool.h | 39 +++++++++++++++++++++++++++--- lib/librte_mempool/rte_mempool_version.map | 2 ++ 12 files changed, 74 insertions(+), 21 deletions(-) diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c index 9dfe34f..fbfe1d0 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -316,12 +316,12 @@ testsuite_teardown(void) if (ts_params->mbuf_pool != NULL) { RTE_LOG(DEBUG, USER1, "CRYPTO_MBUFPOOL count %u\n", - rte_mempool_count(ts_params->mbuf_pool)); + rte_mempool_avail_count(ts_params->mbuf_pool)); } if (ts_params->op_mpool != NULL) { RTE_LOG(DEBUG, USER1, "CRYPTO_OP_POOL count %u\n", - rte_mempool_count(ts_params->op_mpool)); + rte_mempool_avail_count(ts_params->op_mpool)); } } @@ -412,7 +412,7 @@ ut_teardown(void) if (ts_params->mbuf_pool != NULL) RTE_LOG(DEBUG, USER1, "CRYPTO_MBUFPOOL count %u\n", - rte_mempool_count(ts_params->mbuf_pool)); + rte_mempool_avail_count(ts_params->mbuf_pool)); rte_cryptodev_stats_get(ts_params->valid_devs[0], &stats); diff --git a/app/test/test_cryptodev_perf.c b/app/test/test_cryptodev_perf.c index e484cbb..d728211 100644 --- a/app/test/test_cryptodev_perf.c +++ b/app/test/test_cryptodev_perf.c @@ -343,10 +343,10 @@ testsuite_teardown(void) if (ts_params->mbuf_mp != NULL) RTE_LOG(DEBUG, USER1, "CRYPTO_PERF_MBUFPOOL count %u\n", - rte_mempool_count(ts_params->mbuf_mp)); + rte_mempool_avail_count(ts_params->mbuf_mp)); if (ts_params->op_mpool != NULL) RTE_LOG(DEBUG, USER1, "CRYPTO_PERF_OP POOL count %u\n", - rte_mempool_count(ts_params->op_mpool)); + rte_mempool_avail_count(ts_params->op_mpool)); } static int @@ -395,7 +395,7 @@ ut_teardown(void) if (ts_params->mbuf_mp != NULL) RTE_LOG(DEBUG, USER1, "CRYPTO_PERF_MBUFPOOL count %u\n", - rte_mempool_count(ts_params->mbuf_mp)); + rte_mempool_avail_count(ts_params->mbuf_mp)); rte_cryptodev_stats_get(ts_params->dev_id, &stats); diff --git a/app/test/test_mbuf.c b/app/test/test_mbuf.c index 1835acc..8664885 100644 --- a/app/test/test_mbuf.c +++ b/app/test/test_mbuf.c @@ -717,7 +717,7 @@ test_refcnt_iter(unsigned lcore, unsigned iter) * - increment it's reference up to N+1, * - enqueue it N times into the ring for slave cores to free. */ - for (i = 0, n = rte_mempool_count(refcnt_pool); + for (i = 0, n = rte_mempool_avail_count(refcnt_pool); i != n && (m = rte_pktmbuf_alloc(refcnt_pool)) != NULL; i++) { ref = RTE_MAX(rte_rand() % REFCNT_MAX_REF, 1UL); @@ -745,7 +745,7 @@ test_refcnt_iter(unsigned lcore, unsigned iter) /* check that all mbufs are back into mempool by now */ for (wn = 0; wn != REFCNT_MAX_TIMEOUT; wn++) { - if ((i = rte_mempool_count(refcnt_pool)) == n) { + if ((i = rte_mempool_avail_count(refcnt_pool)) == n) { refcnt_lcore[lcore] += tref; printf("%s(lcore=%u, iter=%u) completed, " "%u references processed\n", diff --git a/app/test/test_mempool.c b/app/test/test_mempool.c index 63c61f3..238ff52 100644 --- a/app/test/test_mempool.c +++ b/app/test/test_mempool.c @@ -231,7 +231,7 @@ test_mempool_basic(struct rte_mempool *mp, int use_external_cache) printf("get object count\n"); /* We have to count the extra caches, one in this case. */ offset = use_external_cache ? 1 * cache->len : 0; - if (rte_mempool_count(mp) + offset != MEMPOOL_SIZE - 1) + if (rte_mempool_avail_count(mp) + offset != MEMPOOL_SIZE - 1) GOTO_ERR(ret, out); printf("get private data\n"); @@ -497,7 +497,7 @@ test_mempool_basic_ex(struct rte_mempool *mp) return ret; } printf("test_mempool_basic_ex now mempool (%s) has %u free entries\n", - mp->name, rte_mempool_free_count(mp)); + mp->name, rte_mempool_in_use_count(mp)); if (rte_mempool_full(mp) != 1) { printf("test_mempool_basic_ex the mempool should be full\n"); goto fail_mp_basic_ex; diff --git a/app/test/test_mempool_perf.c b/app/test/test_mempool_perf.c index b80a1dd..4fac04c 100644 --- a/app/test/test_mempool_perf.c +++ b/app/test/test_mempool_perf.c @@ -240,7 +240,7 @@ launch_cores(unsigned cores) external_cache_size : (unsigned) mp->cache_size, cores, n_get_bulk, n_put_bulk, n_keep); - if (rte_mempool_count(mp) != MEMPOOL_SIZE) { + if (rte_mempool_avail_count(mp) != MEMPOOL_SIZE) { printf("mempool is not full\n"); return -1; } diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 56cb1d9..f502f86 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -32,6 +32,12 @@ Deprecation Notices PKT_RX_QINQ_STRIPPED, that are better described. The old flags and their behavior will be kept in 16.07 and will be removed in 16.11. +* The APIs rte_mempool_count and rte_mempool_free_count are being deprecated + on the basis that they are confusing to use - free_count actually returns + the number of allocated entries, not the number of free entries as expected. + They are being replaced by rte_mempool_avail_count and + rte_mempool_in_use_count respectively. + * The mempool functions for single/multi producer/consumer are deprecated and will be removed in 16.11. It is replaced by rte_mempool_generic_get/put functions. diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c index ccce5fd..b5a40fe 100644 --- a/drivers/net/qede/qede_rxtx.c +++ b/drivers/net/qede/qede_rxtx.c @@ -23,8 +23,8 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq) "Failed to allocate rx buffer " "sw_rx_prod %u sw_rx_cons %u mp entries %u free %u", idx, rxq->sw_rx_cons & NUM_RX_BDS(rxq), - rte_mempool_count(rxq->mb_pool), - rte_mempool_free_count(rxq->mb_pool)); + rte_mempool_avail_count(rxq->mb_pool), + rte_mempool_in_use_count(rxq->mb_pool)); return -ENOMEM; } rxq->sw_rx_ring[idx].mbuf = new_mb; diff --git a/examples/multi_process/l2fwd_fork/main.c b/examples/multi_process/l2fwd_fork/main.c index 368b309..2d951d9 100644 --- a/examples/multi_process/l2fwd_fork/main.c +++ b/examples/multi_process/l2fwd_fork/main.c @@ -442,7 +442,8 @@ reset_slave_all_ports(unsigned slaveid) pool = rte_mempool_lookup(buf_name); if (pool) printf("Port %d mempool free object is %u(%u)\n", slave->port[i], - rte_mempool_count(pool), (unsigned)NB_MBUF); + rte_mempool_avail_count(pool), + (unsigned int)NB_MBUF); else printf("Can't find mempool %s\n", buf_name); diff --git a/examples/qos_sched/main.c b/examples/qos_sched/main.c index e16b164..e10cfd4 100644 --- a/examples/qos_sched/main.c +++ b/examples/qos_sched/main.c @@ -201,8 +201,6 @@ app_stat(void) stats.oerrors - tx_stats[i].oerrors); memcpy(&tx_stats[i], &stats, sizeof(stats)); - //printf("MP = %d\n", rte_mempool_count(conf->app_pktmbuf_pool)); - #if APP_COLLECT_STAT printf("-------+------------+------------+\n"); printf(" | received | dropped |\n"); diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c index 4f159fc..d78d02b 100644 --- a/lib/librte_mempool/rte_mempool.c +++ b/lib/librte_mempool/rte_mempool.c @@ -960,8 +960,8 @@ rte_mempool_xmem_create(const char *name, unsigned n, unsigned elt_size, } /* Return the number of entries in the mempool */ -unsigned -rte_mempool_count(const struct rte_mempool *mp) +unsigned int +rte_mempool_avail_count(const struct rte_mempool *mp) { unsigned count; unsigned lcore_id; @@ -983,6 +983,19 @@ rte_mempool_count(const struct rte_mempool *mp) return count; } +/* return the number of entries allocated from the mempool */ +unsigned int +rte_mempool_in_use_count(const struct rte_mempool *mp) +{ + return mp->size - rte_mempool_avail_count(mp); +} + +unsigned int +rte_mempool_count(const struct rte_mempool *mp) +{ + return rte_mempool_avail_count(mp); +} + /* dump the cache status */ static unsigned rte_mempool_dump_cache(FILE *f, const struct rte_mempool *mp) diff --git a/lib/librte_mempool/rte_mempool.h b/lib/librte_mempool/rte_mempool.h index b2a5197..e94a6d7 100644 --- a/lib/librte_mempool/rte_mempool.h +++ b/lib/librte_mempool/rte_mempool.h @@ -1499,9 +1499,41 @@ rte_mempool_get(struct rte_mempool *mp, void **obj_p) * @return * The number of entries in the mempool. */ +unsigned int rte_mempool_avail_count(const struct rte_mempool *mp); + +/** + * @deprecated + * Return the number of entries in the mempool. + * + * When cache is enabled, this function has to browse the length of + * all lcores, so it should not be used in a data path, but only for + * debug purposes. + * + * @param mp + * A pointer to the mempool structure. + * @return + * The number of entries in the mempool. + */ +__rte_deprecated unsigned rte_mempool_count(const struct rte_mempool *mp); /** + * Return the number of elements which have been allocated from the mempool + * + * When cache is enabled, this function has to browse the length of + * all lcores, so it should not be used in a data path, but only for + * debug purposes. + * + * @param mp + * A pointer to the mempool structure. + * @return + * The number of free entries in the mempool. + */ +unsigned int +rte_mempool_in_use_count(const struct rte_mempool *mp); + +/** + * @deprecated * Return the number of free entries in the mempool ring. * i.e. how many entries can be freed back to the mempool. * @@ -1518,10 +1550,11 @@ unsigned rte_mempool_count(const struct rte_mempool *mp); * @return * The number of free entries in the mempool. */ +__rte_deprecated static inline unsigned rte_mempool_free_count(const struct rte_mempool *mp) { - return mp->size - rte_mempool_count(mp); + return rte_mempool_in_use_count(mp); } /** @@ -1540,7 +1573,7 @@ rte_mempool_free_count(const struct rte_mempool *mp) static inline int rte_mempool_full(const struct rte_mempool *mp) { - return !!(rte_mempool_count(mp) == mp->size); + return !!(rte_mempool_avail_count(mp) == mp->size); } /** @@ -1559,7 +1592,7 @@ rte_mempool_full(const struct rte_mempool *mp) static inline int rte_mempool_empty(const struct rte_mempool *mp) { - return !!(rte_mempool_count(mp) == 0); + return !!(rte_mempool_avail_count(mp) == 0); } /** diff --git a/lib/librte_mempool/rte_mempool_version.map b/lib/librte_mempool/rte_mempool_version.map index 729ea97..dee1c99 100644 --- a/lib/librte_mempool/rte_mempool_version.map +++ b/lib/librte_mempool/rte_mempool_version.map @@ -19,6 +19,7 @@ DPDK_2.0 { DPDK_16.07 { global: + rte_mempool_avail_count; rte_mempool_cache_create; rte_mempool_cache_flush; rte_mempool_cache_free; @@ -28,6 +29,7 @@ DPDK_16.07 { rte_mempool_free; rte_mempool_generic_get; rte_mempool_generic_put; + rte_mempool_in_use_count; rte_mempool_mem_iter; rte_mempool_obj_iter; rte_mempool_ops_table; -- 2.5.5