Aneesh Kumar K.V wrote:
> Also add generic_find_next_le_bit
> 
> This gets used by the ext4 multi block allocator patches.
> 

Looks like it's a straight forward on Little Endian Architectures.
I see something for powerpc, what about other architectures?

> 
> +unsigned long generic_find_next_le_bit(const unsigned long *addr, unsigned
> +             long size, unsigned long offset)
> +{

Docbook style comments on the function and arguments would be nice.

> +     const unsigned long *p = addr + BITOP_WORD(offset);
> +     unsigned long result = offset & ~(BITS_PER_LONG - 1);
> +     unsigned long tmp;
> +
> +     if (offset >= size)
> +             return size;
> +     size -= result;
> +     offset &= (BITS_PER_LONG - 1UL);
> +     if (offset) {
> +             tmp = ext2_swabp(p++);
> +             tmp &= (~0UL << offset);
> +             if (size < BITS_PER_LONG)
> +                     goto found_first;
> +             if (tmp)
> +                     goto found_middle;
> +             size -= BITS_PER_LONG;
> +             result += BITS_PER_LONG;
> +     }
> +
> +     while (size & ~(BITS_PER_LONG - 1)) {
> +             tmp = *(p++);
> +             if (tmp)
> +                     goto found_middle_swap;
> +             result += BITS_PER_LONG;
> +             size -= BITS_PER_LONG;
> +     }
> +     if (!size)
> +             return result;
> +     tmp = ext2_swabp(p);
> +found_first:
> +     tmp &= (~0UL >> (BITS_PER_LONG - size));
> +     if (tmp == 0UL)         /* Are any bits set? */
> +             return result + size; /* Nope. */
> +found_middle:
> +     return result + __ffs(tmp);
> +
> +found_middle_swap:
> +     return result + __ffs(ext2_swab(tmp));
> +}
> +EXPORT_SYMBOL(generic_find_next_le_bit);
> +
>  #endif /* __BIG_ENDIAN */


-- 
        Warm Regards,
        Balbir Singh
        Linux Technology Center
        IBM, ISTL
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to