From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 13534A059F; Fri, 10 Apr 2020 14:46:51 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6CAAB1D56D; Fri, 10 Apr 2020 14:46:38 +0200 (CEST) Received: from git-send-mailer.rdmz.labs.mlnx (unknown [37.142.13.130]) by dpdk.org (Postfix) with ESMTP id 552A41D53F for ; Fri, 10 Apr 2020 14:46:33 +0200 (CEST) From: Suanming Mou To: cristian.dumitrescu@intel.com, dev@dpdk.org Cc: amo@semihalf.com Date: Fri, 10 Apr 2020 20:46:27 +0800 Message-Id: <1586522787-403236-3-git-send-email-suanmingm@mellanox.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1586522787-403236-1-git-send-email-suanmingm@mellanox.com> References: <1583828479-204084-1-git-send-email-suanmingm@mellanox.com> <1586522787-403236-1-git-send-email-suanmingm@mellanox.com> Subject: [dpdk-dev] [PATCH v3 2/2] test/bitmap: add bitmap create with all bits set case X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add the case to verify bitmap create with all bits set works correctly. Signed-off-by: Suanming Mou --- app/test/test_bitmap.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/app/test/test_bitmap.c b/app/test/test_bitmap.c index 95c5184..a8204d3 100644 --- a/app/test/test_bitmap.c +++ b/app/test/test_bitmap.c @@ -146,7 +146,7 @@ } static int -test_bitmap(void) +test_bitmap_all_clear(void) { void *mem; uint32_t bmp_size; @@ -182,4 +182,59 @@ return TEST_SUCCESS; } +static int +test_bitmap_all_set(void) +{ + void *mem; + uint32_t i; + uint64_t slab; + uint32_t pos; + uint32_t bmp_size; + struct rte_bitmap *bmp; + + bmp_size = + rte_bitmap_get_memory_footprint(MAX_BITS); + + mem = rte_zmalloc("test_bmap", bmp_size, RTE_CACHE_LINE_SIZE); + if (mem == NULL) { + printf("Failed to allocate memory for bitmap\n"); + return TEST_FAILED; + } + + bmp = rte_bitmap_init_with_all_set(MAX_BITS, mem, bmp_size); + if (bmp == NULL) { + printf("Failed to init bitmap\n"); + return TEST_FAILED; + } + + for (i = 0; i < MAX_BITS; i++) { + pos = slab = 0; + if (!rte_bitmap_scan(bmp, &pos, &slab)) { + printf("Failed with init bitmap.\n"); + return TEST_FAILED; + } + pos += (slab ? __builtin_ctzll(slab) : 0); + rte_bitmap_clear(bmp, pos); + } + + if (rte_bitmap_scan(bmp, &pos, &slab)) { + printf("Too much bits set.\n"); + return TEST_FAILED; + } + + rte_bitmap_free(bmp); + rte_free(mem); + + return TEST_SUCCESS; + +} + +static int +test_bitmap(void) +{ + if (test_bitmap_all_clear() != TEST_SUCCESS) + return TEST_FAILED; + return test_bitmap_all_set(); +} + REGISTER_TEST_COMMAND(bitmap_test, test_bitmap); -- 1.8.3.1