projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Move tp.[ch] to lib/
[fio.git]
/
lib
/
ffz.h
diff --git
a/lib/ffz.h
b/lib/ffz.h
index 7fc7d4567ef155035527e9bc5c5751feafd5d9d9..eef612d1a136106feacc4d65939da21f3fcefa26 100644
(file)
--- a/
lib/ffz.h
+++ b/
lib/ffz.h
@@
-1,10
+1,16
@@
#ifndef FIO_FFZ_H
#define FIO_FFZ_H
#ifndef FIO_FFZ_H
#define FIO_FFZ_H
-static inline int __ffs(
int
word)
+static inline int __ffs(
unsigned long
word)
{
int r = 0;
{
int r = 0;
+#if BITS_PER_LONG == 64
+ if ((word & 0xffffffff) == 0) {
+ r += 32;
+ word >>= 32;
+ }
+#endif
if (!(word & 0xffff)) {
word >>= 16;
r += 16;
if (!(word & 0xffff)) {
word >>= 16;
r += 16;
@@
-29,9
+35,9
@@
static inline int __ffs(int word)
return r;
}
return r;
}
-static inline int ffz(unsigned
int
bitmask)
+static inline int ffz(unsigned
long
bitmask)
{
{
- return ffs(~bitmask);
+ return
__
ffs(~bitmask);
}
#endif
}
#endif