From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932397AbbCPR47 (ORCPT ); Mon, 16 Mar 2015 13:56:59 -0400 Received: from mail-la0-f54.google.com ([209.85.215.54]:32871 "EHLO mail-la0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932223AbbCPR46 (ORCPT ); Mon, 16 Mar 2015 13:56:58 -0400 From: Yury Norov To: linux@horizon.com, klimov.linux@gmail.com, linux@rasmusvillemoes.dk, akpm@linux-foundation.org Cc: yury.norov@gmail.com, linux-kernel@vger.kernel.org Subject: [PATCH] lib: bitmap_[empty,full]: remove code duplication Date: Mon, 16 Mar 2015 20:56:39 +0300 Message-Id: <1426528599-3735-1-git-send-email-yury.norov@gmail.com> X-Mailer: git-send-email 2.1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Function 'bitmap_empty' has it's own implementation. But it's clearly as simple as: "find_first_bit(src, nbits) == nbits" The same is true for 'bitmap_full'. Underscored versions of 'bitmap_[empty,full]' are not needed anymore and so removed too. Boot-tested on Core i7-2630QM. --- include/linux/bitmap.h | 10 ++-------- lib/bitmap.c | 30 ------------------------------ 2 files changed, 2 insertions(+), 38 deletions(-) diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h index dbfbf49..a56e250 100644 --- a/include/linux/bitmap.h +++ b/include/linux/bitmap.h @@ -285,18 +285,12 @@ static inline int bitmap_subset(const unsigned long *src1, static inline int bitmap_empty(const unsigned long *src, unsigned nbits) { - if (small_const_nbits(nbits)) - return ! (*src & BITMAP_LAST_WORD_MASK(nbits)); - else - return __bitmap_empty(src, nbits); + return find_first_bit(src, nbits) == nbits; } static inline int bitmap_full(const unsigned long *src, unsigned int nbits) { - if (small_const_nbits(nbits)) - return ! (~(*src) & BITMAP_LAST_WORD_MASK(nbits)); - else - return __bitmap_full(src, nbits); + return find_first_zero_bit(src, nbits) == nbits; } static inline int bitmap_weight(const unsigned long *src, unsigned int nbits) diff --git a/lib/bitmap.c b/lib/bitmap.c index d456f4c1..64c0926 100644 --- a/lib/bitmap.c +++ b/lib/bitmap.c @@ -42,36 +42,6 @@ * for the best explanations of this ordering. */ -int __bitmap_empty(const unsigned long *bitmap, unsigned int bits) -{ - unsigned int k, lim = bits/BITS_PER_LONG; - for (k = 0; k < lim; ++k) - if (bitmap[k]) - return 0; - - if (bits % BITS_PER_LONG) - if (bitmap[k] & BITMAP_LAST_WORD_MASK(bits)) - return 0; - - return 1; -} -EXPORT_SYMBOL(__bitmap_empty); - -int __bitmap_full(const unsigned long *bitmap, unsigned int bits) -{ - unsigned int k, lim = bits/BITS_PER_LONG; - for (k = 0; k < lim; ++k) - if (~bitmap[k]) - return 0; - - if (bits % BITS_PER_LONG) - if (~bitmap[k] & BITMAP_LAST_WORD_MASK(bits)) - return 0; - - return 1; -} -EXPORT_SYMBOL(__bitmap_full); - int __bitmap_equal(const unsigned long *bitmap1, const unsigned long *bitmap2, unsigned int bits) { -- 2.1.0