Commit 92d56774 authored by George Spelvin's avatar George Spelvin

Change hash_64() return value to 32 bits

That's all that's ever asked for, and it makes the return
type of hash_long() consistent.

It also allows (upcoming patch) an optimized implementation
of hash_64 on 32-bit machines.

I tried adding a BUILD_BUG_ON to ensure the number of bits requested
was never more than 32 (most callers use a compile-time constant), but
adding <linux/bug.h> to <linux/hash.h> breaks the tools/perf compiler
unless tools/perf/MANIFEST is updated, and understanding that code base
well enough to update it is too much trouble.  I did the rest of an
allyesconfig build with such a check, and nothing tripped.
Signed-off-by: default avatarGeorge Spelvin <linux@sciencehorizons.net>
parent 917ea166
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
#define GOLDEN_RATIO_32 0x61C88647 #define GOLDEN_RATIO_32 0x61C88647
#define GOLDEN_RATIO_64 0x61C8864680B583EBull #define GOLDEN_RATIO_64 0x61C8864680B583EBull
static __always_inline u64 hash_64(u64 val, unsigned int bits) static __always_inline u32 hash_64(u64 val, unsigned int bits)
{ {
u64 hash = val; u64 hash = val;
...@@ -72,7 +72,7 @@ static __always_inline u64 hash_64(u64 val, unsigned int bits) ...@@ -72,7 +72,7 @@ static __always_inline u64 hash_64(u64 val, unsigned int bits)
#endif #endif
/* High bits are more random, so use them. */ /* High bits are more random, so use them. */
return hash >> (64 - bits); return (u32)(hash >> (64 - bits));
} }
static inline u32 hash_32(u32 val, unsigned int bits) static inline u32 hash_32(u32 val, unsigned int bits)
...@@ -84,7 +84,7 @@ static inline u32 hash_32(u32 val, unsigned int bits) ...@@ -84,7 +84,7 @@ static inline u32 hash_32(u32 val, unsigned int bits)
return hash >> (32 - bits); return hash >> (32 - bits);
} }
static inline unsigned long hash_ptr(const void *ptr, unsigned int bits) static inline u32 hash_ptr(const void *ptr, unsigned int bits)
{ {
return hash_long((unsigned long)ptr, bits); return hash_long((unsigned long)ptr, bits);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment