X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=lib%2Fffz.h;h=e2c1b8e94a39731fd2dbcfe6bebd8a19c69dd830;hb=63bda378a7eacfb02501ce2f1d996427f29b1336;hp=eef612d1a136106feacc4d65939da21f3fcefa26;hpb=0ce8b119b65849e537cab628a176a0ec4238aab0;p=fio.git diff --git a/lib/ffz.h b/lib/ffz.h index eef612d1..e2c1b8e9 100644 --- a/lib/ffz.h +++ b/lib/ffz.h @@ -1,16 +1,16 @@ #ifndef FIO_FFZ_H #define FIO_FFZ_H -static inline int __ffs(unsigned long word) +#include + +static inline int ffs64(uint64_t word) { int r = 0; -#if BITS_PER_LONG == 64 if ((word & 0xffffffff) == 0) { r += 32; word >>= 32; } -#endif if (!(word & 0xffff)) { word >>= 16; r += 16; @@ -35,9 +35,20 @@ static inline int __ffs(unsigned long word) return r; } +#ifndef ARCH_HAVE_FFZ + static inline int ffz(unsigned long bitmask) { - return __ffs(~bitmask); + return ffs64(~bitmask); +} + +#else +#define ffz(bitmask) arch_ffz(bitmask) +#endif + +static inline int ffz64(uint64_t bitmask) +{ + return ffs64(~bitmask); } #endif