lkml.org 
[lkml]   [2007]   [Sep]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] Introduce ext4_find_next_bit
    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 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/

    \
     
     \ /
      Last update: 2007-09-21 08:47    [W:0.023 / U:94.808 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site