summaryrefslogtreecommitdiff
path: root/lib/hash.h
diff options
context:
space:
mode:
authorJan Moskyto Matejka <mq@ucw.cz>2016-02-10 13:26:07 +0100
committerJan Moskyto Matejka <mq@ucw.cz>2016-02-10 13:26:07 +0100
commit9a74622ca1994669cdb3bac0bb2f6df2febd2744 (patch)
treebbc275b7b10fd6194f3195c9991a5c1d2f4dcf72 /lib/hash.h
parent1bb3ecb2a5369bc1992514da3cf5ef59dca46416 (diff)
Updated RTA hashes to 32-bit values.
... and reworked the hashes a bit. Also added mem_hash function which just computes a hash of given memory block.
Diffstat (limited to 'lib/hash.h')
-rw-r--r--lib/hash.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/hash.h b/lib/hash.h
index a73f647a..f4a953a3 100644
--- a/lib/hash.h
+++ b/lib/hash.h
@@ -178,3 +178,15 @@
#define HASH_WALK_FILTER_END } while (0)
+static inline uint
+mem_hash(void *p, int s)
+{
+ const char *pp = p;
+ const u64 multiplier = 0xb38bc09a61202731ULL;
+ u64 value = 0x001047d54778bcafULL;
+ for (int i=0;i<s;i++)
+ value = value*multiplier + pp[i];
+
+ return ((value >> 32) ^ (value & 0xffffffff));
+}
+