From 53fee3e5edfb834b13fbf5284fbe474647935899 Mon Sep 17 00:00:00 2001 From: Niklas Cassel Date: Thu, 11 Nov 2021 01:03:28 +0000 Subject: [PATCH] util: add spdk_u64_is_pow2() There already is a spdk_u32_is_pow2() function that handles uint32_t. Add a spdk_u64_is_pow2() function that handles uint64_t. Signed-off-by: Niklas Cassel Change-Id: Idc96680dbe280d1510aba94a6900eff64ccb4f03 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10179 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Aleksey Marchuk Reviewed-by: Ben Walker --- include/spdk/util.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/spdk/util.h b/include/spdk/util.h index 916324bbd..40a71152b 100644 --- a/include/spdk/util.h +++ b/include/spdk/util.h @@ -110,6 +110,19 @@ spdk_u32_is_pow2(uint32_t x) return (x & (x - 1)) == 0; } +/** + * Check if a uint64_t is a power of 2. + */ +static inline bool +spdk_u64_is_pow2(uint64_t x) +{ + if (x == 0) { + return false; + } + + return (x & (x - 1)) == 0; +} + static inline uint64_t spdk_divide_round_up(uint64_t num, uint64_t divisor) {