[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [patch] arca-vm-2.2.5
On Tue, 6 Apr 1999, David Miller wrote:
> #define log2(x) \
>
> Look at the code just the 'i' in question will output :-)
>
> mov inode, %o0
> srlx %o0, 3, %o4
>
> So on sparc64 atleast, it amounts to "inode >> 3". So:
(yep it's the same on x86 too, given sizeof(struct inode) == 0x110)
> (sizeof(struct inode) & ~ (sizeof(struct inode) - 1))
>
> is 8 on sparc64. The 'i' construct is just meant to get rid of the
> "non significant" lower bits of the inode pointer and it does so very
> nicely. :-)
but it's not just the lower 3 bits that are unsignificant. It's 8
unsignificant bits. (8.1 actually :) It should be 'inode >> 8' (which is
done by the log2 solution). Unless i'm misunderstanding something. The
thing we are AFAIU trying to avoid is 'x/sizeof(inode)', which can be a
costy division. So i've substituted it with
'x/nearest_power_of_2(sizeof(inode))' which is just as good in getting rid
of insignificant bits.
-- mingo
--
To unsubscribe, send a message with 'unsubscribe linux-mm my@address'
in the body to majordomo@kvack.org. For more info on Linux MM,
see: http://humbolt.geo.uu.nl/Linux-MM/