libbpf: Extract generic string hashing function for reuse

Calculating a hash of zero-terminated string is a common need when using
hashmap, so extract it for reuse.

Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Link: https://lore.kernel.org/bpf/20200926011357.2366158-5-andriin@fb.com
This commit is contained in:
Andrii Nakryiko 2020-09-25 18:13:52 -07:00 committed by Alexei Starovoitov
parent 192f5a1fe6
commit 7d9c71e10b
2 changed files with 13 additions and 8 deletions

View File

@ -90,14 +90,7 @@ struct btf_dump {
static size_t str_hash_fn(const void *key, void *ctx)
{
const char *s = key;
size_t h = 0;
while (*s) {
h = h * 31 + *s;
s++;
}
return h;
return str_hash(key);
}
static bool str_equal_fn(const void *a, const void *b, void *ctx)

View File

@ -25,6 +25,18 @@ static inline size_t hash_bits(size_t h, int bits)
#endif
}
/* generic C-string hashing function */
static inline size_t str_hash(const char *s)
{
size_t h = 0;
while (*s) {
h = h * 31 + *s;
s++;
}
return h;
}
typedef size_t (*hashmap_hash_fn)(const void *key, void *ctx);
typedef bool (*hashmap_equal_fn)(const void *key1, const void *key2, void *ctx);