[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RESEND][PATCH] bitmap: get last word mask from nr dire
From: |
Peter Xu |
Subject: |
Re: [Qemu-devel] [RESEND][PATCH] bitmap: get last word mask from nr directly |
Date: |
Wed, 17 Jul 2019 11:11:55 +0800 |
User-agent: |
Mutt/1.11.4 (2019-03-13) |
On Wed, Jul 17, 2019 at 10:46:37AM +0800, Wei Yang wrote:
> On Wed, Jul 17, 2019 at 09:59:10AM +0800, Peter Xu wrote:
> >On Wed, Jul 17, 2019 at 09:29:02AM +0800, Wei Yang wrote:
> >> The value left in nr is the number of bits for the last word, which
> >> could be calculate the last word mask directly.
> >
> >Is it true even if start does not align to BITS_PER_LONG?
> >
>
> Yes. Let me see how to explain this.
>
> When you look into the definition of BITMAP_LAST_WORD_MASK, it takes the
> number of total bits and give the number of bits in last word. While the value
> matters for the input is the number of last word. This means the following
> equation stands
>
> BITMAP_LAST_WORD_MASK(size) == BITMAP_FIRST_WORD_MASK(size % BITS_PER_LONG)
>
> Now let look at the calculation for nr. In each iteration, nr will be
> truncated to be aligned to BITS_PER_LONG. So when we exit the loop, nr keeps
> the number of bits in last word.
>
> So we can leverage the result, no matter the start is aligned or not.
Yes, you are right.
Do you have plan to write some unit tests for these functions? :)
It'll be tests/test-bitmap.c. IMHO the test cases could be even more
helpful to the QEMU project as a whole comparing to this patch to
guarantee changes like your patch won't break.
At the meantime I think you can also do that to bitmap_set_atomic.
Thanks,
--
Peter Xu