All of lore.kernel.org
 help / color / mirror / Atom feed
From: hejianet <hejianet@gmail.com>
To: xinhui <xinhui@linux.vnet.ibm.com>,
	linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Rasmus Villemoes <linux@rasmusvillemoes.dk>,
	Denys Vlasenko <dvlasenk@redhat.com>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Michal Nazarewicz <mina86@mina86.com>,
	Yury Norov <yury.norov@gmail.com>, Tejun Heo <tj@kernel.org>,
	Martin Kepplinger <martink@posteo.de>,
	George Spelvin <linux@horizon.com>,
	Ingo Molnar <mingo@kernel.org>, Arnd Bergmann <arnd@arndb.de>
Subject: Re: [PATCH v2 2/3] lib: Introduce 2 bit ops api: all_is_bit_{one,zero}
Date: Thu, 19 Nov 2015 16:55:03 +0800	[thread overview]
Message-ID: <564D8E67.6030706@gmail.com> (raw)
In-Reply-To: <564D8B14.9030509@linux.vnet.ibm.com>

Thanks, I will add it in next verison
B.R.
Justin

在 11/19/15 4:40 PM, xinhui 写道:
> hi, jia
>     Nice patch. But I have one minor question. see inline comments.
>
> On 2015/11/19 14:48, Jia He wrote:
>> This patch introduces 2 lightweight bit api.
>> all_bit_is_zero return 1 if the bit string is all zero.
>> The addr is the start address, the size is the bit size of the bit 
>> string.
>> all_bit_is_one is the opposite.
>>
>> Signed-off-by: Jia He <hejianet@gmail.com>
>> ---
>>   lib/find_bit.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
>>   1 file changed, 50 insertions(+)
>>
>> diff --git a/lib/find_bit.c b/lib/find_bit.c
>> index 18072ea..1d56d8d 100644
>> --- a/lib/find_bit.c
>> +++ b/lib/find_bit.c
>> @@ -131,6 +131,56 @@ unsigned long find_last_bit(const unsigned long 
>> *addr, unsigned long size)
>>   EXPORT_SYMBOL(find_last_bit);
>>   #endif
>>
>> +#ifndef all_bit_is_zero
>> +/*
>> + * return val: 1 means all bit is zero
>> + */
>> +unsigned int all_bit_is_zero(const unsigned long *addr, unsigned size)
>> +{
>  Seems better that size should be type of "unsigned long". Otherwise 
> I'm afraid when we compare idx * BITS_PER_LONG with size, there might 
> be overflow issue.
>
>> +    unsigned long idx;
>> +    unsigned long mask = size;
>> +
>> +    if (unlikely(size == 0))
>> +        return 1;
>> +
>> +    if (size > BITS_PER_LONG) {
>> +        for (idx = 0; idx * BITS_PER_LONG < size; idx++)
>> +            if (addr[idx])
>> +                return 0;
>> +
>> +        mask = size - (idx - 1) * BITS_PER_LONG;
>> +    }
>> +
>> +    return !(*addr & BITMAP_LAST_WORD_MASK(mask));
>> +}
>> +EXPORT_SYMBOL(all_bit_is_zero);
>> +#endif
>> +
>> +#ifndef all_bit_is_one
>> +/*
>> + * return val: 1 means all bit is one
>> + */
>> +unsigned int all_bit_is_one(const unsigned long *addr, unsigned size)
>> +{
> this argc of size should be type of "unsigned long", too.
>
> thanks
> xinhui
>
>> +    unsigned long idx;
>> +    unsigned long mask = size;
>> +
>> +    if (unlikely(size == 0))
>> +        return 1;
>> +
>> +    if (size > BITS_PER_LONG) {
>> +        for (idx = 0; idx * BITS_PER_LONG < size; idx++)
>> +            if (~addr[idx])
>> +                return 0;
>> +
>> +        mask = size - (idx - 1) * BITS_PER_LONG;
>> +    }
>> +
>> +    return !(~(*addr) & BITMAP_LAST_WORD_MASK(mask));
>> +}
>> +EXPORT_SYMBOL(all_bit_is_one);
>> +#endif
>> +
>>   #ifdef __BIG_ENDIAN
>>
>>   /* include/linux/byteorder does not support "unsigned long" type */
>>
>
> -- 
> To unsubscribe from this list: send the line "unsubscribe 
> linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>

  reply	other threads:[~2015-11-19  8:55 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-19  6:48 [PATCH v2 0/3] Improve bitmap_empty and bitmap_full Jia He
2015-11-19  6:48 ` [PATCH v2 1/3] linux/bitmap: Move 2 mask macro from bitmap.h to bitops.h Jia He
2015-11-19  6:48 ` [PATCH v2 2/3] lib: Introduce 2 bit ops api: all_is_bit_{one,zero} Jia He
2015-11-19  8:40   ` xinhui
2015-11-19  8:55     ` hejianet [this message]
2015-11-19  8:49   ` yalin wang
2015-11-19  6:48 ` [PATCH v3 3/3] linux/bitmap: Replace find_fisrt_{zero_}bit with the new lightweight api Jia He
2015-11-19  9:01 ` [PATCH v2 0/3] Improve bitmap_empty and bitmap_full Rasmus Villemoes

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=564D8E67.6030706@gmail.com \
    --to=hejianet@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=dvlasenk@redhat.com \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@horizon.com \
    --cc=linux@rasmusvillemoes.dk \
    --cc=martink@posteo.de \
    --cc=mina86@mina86.com \
    --cc=mingo@kernel.org \
    --cc=tj@kernel.org \
    --cc=xinhui@linux.vnet.ibm.com \
    --cc=yury.norov@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.