
Dear Kumar,
in message 3F2661BD-8C86-410F-984D-B887242A8AA2@kernel.crashing.org you wrote:
Comments and code do not match; you'r actually adding much more code.
I was just needing the u64 versions and the other stuff came along to make it work :)
Please make the comment match the code.
Also: is fls() vs. __fls() a good way to differentiate between int and ulong?
I took this from the kernel source tree and didn't really pay much attention to it.
Maybe we can do better?
- fls64(value) returns 0 if value is 0 or the position of the last
- set bit if value is nonzero. The last (most significant) bit is
Sorry, I can't parse this.
again taken from kernel land.
No reason not to fix it.
+#elif BITS_PER_LONG == 64 +static inline int fls64(__u64 x) +{
- if (x == 0)
return 0;
- return __fls(x) + 1;
Do I have to understand where the "+1" is coming from?
Nope, you can just accept it. I can drop this for now since I don't believe we support any ppc64 machines.
I guess we might see support for the PA6T soon. SO please leave it here.
And I'd appreciate if somebody could explain the code to me...
+static inline int ffs64(u64 x) +{
- return __ilog2_u64(x & -x) + 1ull;
Isn't there an easier way to do this?
Not aware of one.
So, I've stolen this from the kernel and am not sure what you'd like for me to change at this point.
Please clean it up and fix at least the obvious issues.
Best regards,
Wolfgang Denk