Re: [PATCH 1/3] bitops: Add __ffs64 bitop

From: Steven Whitehouse
Date: Mon Apr 27 2009 - 11:41:58 EST


Hi,

On Mon, 2009-04-27 at 09:40 -0400, Valdis.Kletnieks@xxxxxx wrote:
> On Thu, 23 Apr 2009 10:16:54 BST, Steven Whitehouse said:
> > Finds the first set bit in a 64 bit word. This is required in order
> > to fix a bug in GFS2, but I think it should be a generic function
> > in case of future users.
>
> Seems like a sane idea..
>
> > +static inline unsigned long __ffs64(u64 word)
> > +{
> > +#if BITS_PER_LONG == 32
> > + if (((u32)word) == 0UL)
> > + return __ffs((u32)(word >> 32)) + 32;
> > +#elif BITS_PER_LONG != 64
> > +#error BITS_PER_LONG not 32 or 64
> > +#endif
> > + return __ffs((unsigned long)word);
> > +}
> > +
>
> Does this have endian-ness issues (is that (u32)word the "high" or "low"
> part)? Or is this intended only for looking at bitmaps and the like, and we
> don't really care?

The intent was that it would operate on native endian u64 words so that
it shouldn't be affected by the endianess. In the GFS2 code where it is
used, the byte ordering is converted to native order before this
function is applied,

Steve.


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/