changeset 13222:83699b38229b

liblib: Added generic mem_hash()
author Timo Sirainen <tss@iki.fi>
date Fri, 12 Aug 2011 17:40:19 +0300
parents bf55c954ba3b
children 271bbac3047d
files src/lib/hash.c src/lib/hash.h
diffstat 2 files changed, 19 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/hash.c	Thu Aug 11 18:10:33 2011 +0300
+++ b/src/lib/hash.c	Fri Aug 12 17:40:19 2011 +0300
@@ -511,3 +511,20 @@
 
 	return h;
 }
+
+unsigned int mem_hash(const void *p, unsigned int size)
+{
+	const unsigned char *s = p;
+	unsigned int i, g, h = 0;
+
+	for (i = 0; i < size; i++) {
+		h = (h << 4) + *s;
+		if ((g = h & 0xf0000000UL)) {
+			h = h ^ (g >> 24);
+			h = h ^ g;
+		}
+		s++;
+	}
+	return h;
+}
+
--- a/src/lib/hash.h	Thu Aug 11 18:10:33 2011 +0300
+++ b/src/lib/hash.h	Fri Aug 12 17:40:19 2011 +0300
@@ -53,5 +53,7 @@
 /* hash function for strings */
 unsigned int str_hash(const void *p) ATTR_PURE;
 unsigned int strcase_hash(const void *p) ATTR_PURE;
+/* a generic hash for a given memory block */
+unsigned int mem_hash(const void *p, unsigned int size) ATTR_PURE;
 
 #endif