diff options
Diffstat (limited to 'include/linux/hash.h')
-rw-r--r-- | include/linux/hash.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/include/linux/hash.h b/include/linux/hash.h index f09a0ae4d858..bd1754c7ecef 100644 --- a/include/linux/hash.h +++ b/include/linux/hash.h | |||
@@ -15,6 +15,7 @@ | |||
15 | */ | 15 | */ |
16 | 16 | ||
17 | #include <asm/types.h> | 17 | #include <asm/types.h> |
18 | #include <asm/hash.h> | ||
18 | #include <linux/compiler.h> | 19 | #include <linux/compiler.h> |
19 | 20 | ||
20 | /* 2^31 + 2^29 - 2^25 + 2^22 - 2^19 - 2^16 + 1 */ | 21 | /* 2^31 + 2^29 - 2^25 + 2^22 - 2^19 - 2^16 + 1 */ |
@@ -78,4 +79,39 @@ static inline u32 hash32_ptr(const void *ptr) | |||
78 | #endif | 79 | #endif |
79 | return (u32)val; | 80 | return (u32)val; |
80 | } | 81 | } |
82 | |||
83 | struct fast_hash_ops { | ||
84 | u32 (*hash)(const void *data, u32 len, u32 seed); | ||
85 | u32 (*hash2)(const u32 *data, u32 len, u32 seed); | ||
86 | }; | ||
87 | |||
88 | /** | ||
89 | * arch_fast_hash - Caclulates a hash over a given buffer that can have | ||
90 | * arbitrary size. This function will eventually use an | ||
91 | * architecture-optimized hashing implementation if | ||
92 | * available, and trades off distribution for speed. | ||
93 | * | ||
94 | * @data: buffer to hash | ||
95 | * @len: length of buffer in bytes | ||
96 | * @seed: start seed | ||
97 | * | ||
98 | * Returns 32bit hash. | ||
99 | */ | ||
100 | extern u32 arch_fast_hash(const void *data, u32 len, u32 seed); | ||
101 | |||
102 | /** | ||
103 | * arch_fast_hash2 - Caclulates a hash over a given buffer that has a | ||
104 | * size that is of a multiple of 32bit words. This | ||
105 | * function will eventually use an architecture- | ||
106 | * optimized hashing implementation if available, | ||
107 | * and trades off distribution for speed. | ||
108 | * | ||
109 | * @data: buffer to hash (must be 32bit padded) | ||
110 | * @len: number of 32bit words | ||
111 | * @seed: start seed | ||
112 | * | ||
113 | * Returns 32bit hash. | ||
114 | */ | ||
115 | extern u32 arch_fast_hash2(const u32 *data, u32 len, u32 seed); | ||
116 | |||
81 | #endif /* _LINUX_HASH_H */ | 117 | #endif /* _LINUX_HASH_H */ |