Re: [PATCH] bitops: simplify get_count_order_long()

From: Andrew Morton
Date: Wed May 27 2020 - 19:05:12 EST


On Wed, 27 May 2020 22:45:42 +0000 Wei Yang <richard.weiyang@xxxxxxxxx> wrote:

> /* a tiny module only meant to test get_count_order/long */
> unsigned int order_comb[][2] = {
> {0x00000003, 2},
> {0x00000004, 2},
> {0x00001fff, 13},
> {0x00002000, 13},
> {0x50000000, 32},
> {0x80000000, 32},
> };
>
> static int __init test_getorder_startup(void)
> {
> int i;
>
> for (i = 0; i < ARRAY_SIZE(order_comb); i++) {
> if (order_comb[i][1] != get_count_order(order_comb[i][0]))
> pr_warn("get_count_order wrong for %lx\n",
> order_comb[i][0]);
> }
>
> return 0;
> }
>
> Since I don't get a way to iterate all the possibilities, some random
> combination is chosen. Is this one looks good?

Looks good.

You might want to add a less-negative number as well? 0x80030000.
Something that won't turn positive if it has 1 subtracted from it.