summaryrefslogtreecommitdiff
path: root/libkmod/libkmod-hash.c
diff options
context:
space:
mode:
Diffstat (limited to 'libkmod/libkmod-hash.c')
-rw-r--r--libkmod/libkmod-hash.c46
1 files changed, 30 insertions, 16 deletions
diff --git a/libkmod/libkmod-hash.c b/libkmod/libkmod-hash.c
index 5610861..cdb8965 100644
--- a/libkmod/libkmod-hash.c
+++ b/libkmod/libkmod-hash.c
@@ -294,7 +294,7 @@ static _always_inline_ unsigned int hashfunc(const char *key, unsigned int len)
* none of key or value are copied, just references are remembered as is,
* make sure they are live while pair exists in hash!
*/
-int hash_add(struct hash *hash, const char *key, const void *value)
+static _always_inline_ int _hash_add(struct hash *hash, const char *key, const void *value)
{
unsigned int keylen = strlen(key);
unsigned int hashval = hashfunc(key, keylen);
@@ -334,6 +334,20 @@ int hash_add(struct hash *hash, const char *key, const void *value)
hash->count++;
return 0;
}
+
+int hash_add(struct hash *hash, const char *key, const void *value)
+{
+ unsigned long t;
+ int ret;
+
+ t = get_cycles(0);
+ ret = _hash_add(hash, key, value);
+ t = get_cycles(t);
+
+ printf("%lu %lu\n", strlen(key), t);
+ return ret;
+}
+
#if 0
void hash_dump(struct hash *hash)
{
@@ -371,7 +385,7 @@ void hash_dump_keys(struct hash *hash) {}
#endif
/* similar to hash_add(), but fails if key already exists */
-int hash_add_unique(struct hash *hash, const char *key, const void *value)
+static _always_inline_ int _hash_add_unique(struct hash *hash, const char *key, const void *value)
{
unsigned int keylen = strlen(key);
unsigned int hashval = hashfunc(key, keylen);
@@ -409,6 +423,19 @@ int hash_add_unique(struct hash *hash, const char *key, const void *value)
return 0;
}
+int hash_add_unique(struct hash *hash, const char *key, const void *value)
+{
+ unsigned long t;
+ int ret;
+
+ t = get_cycles(0);
+ ret = _hash_add_unique(hash, key, value);
+ t = get_cycles(t);
+
+ printf("%lu %lu\n", strlen(key), t);
+ return ret;
+}
+
static int hash_entry_cmp(const void *pa, const void *pb)
{
const struct hash_entry *a = pa;
@@ -416,7 +443,7 @@ static int hash_entry_cmp(const void *pa, const void *pb)
return strcmp(a->key, b->key);
}
-static _always_inline_ void *_hash_find(const struct hash *hash, const char *key)
+void *hash_find(const struct hash *hash, const char *key)
{
unsigned int keylen = strlen(key);
unsigned int hashval = hashfunc(key, keylen);
@@ -434,19 +461,6 @@ static _always_inline_ void *_hash_find(const struct hash *hash, const char *key
return (void *)entry->value;
}
-void *hash_find(const struct hash *hash, const char *key)
-{
- unsigned long t;
- void *ret;
-
- t = get_cycles(0);
- ret = _hash_find(hash, key);
- t = get_cycles(t);
-
- printf("%lu %lu\n", strlen(key), t);
- return ret;
-}
-
int hash_del(struct hash *hash, const char *key)
{
unsigned int keylen = strlen(key);