xref: /linux-6.15/scripts/include/hash.h (revision f93d6bfb)
1a16219bdSMasahiro Yamada /* SPDX-License-Identifier: GPL-2.0-only */
2a16219bdSMasahiro Yamada #ifndef HASH_H
3a16219bdSMasahiro Yamada #define HASH_H
4a16219bdSMasahiro Yamada 
hash_str(const char * s)5a16219bdSMasahiro Yamada static inline unsigned int hash_str(const char *s)
6a16219bdSMasahiro Yamada {
7a16219bdSMasahiro Yamada 	/* fnv32 hash */
8a16219bdSMasahiro Yamada 	unsigned int hash = 2166136261U;
9a16219bdSMasahiro Yamada 
10a16219bdSMasahiro Yamada 	for (; *s; s++)
11a16219bdSMasahiro Yamada 		hash = (hash ^ *s) * 0x01000193;
12a16219bdSMasahiro Yamada 	return hash;
13a16219bdSMasahiro Yamada }
14a16219bdSMasahiro Yamada 
15*f93d6bfbSMasahiro Yamada /* simplified version of functions from include/linux/hash.h */
16*f93d6bfbSMasahiro Yamada #define GOLDEN_RATIO_32 0x61C88647
17*f93d6bfbSMasahiro Yamada 
hash_32(unsigned int val)18*f93d6bfbSMasahiro Yamada static inline unsigned int hash_32(unsigned int val)
19*f93d6bfbSMasahiro Yamada {
20*f93d6bfbSMasahiro Yamada 	return 0x61C88647 * val;
21*f93d6bfbSMasahiro Yamada }
22*f93d6bfbSMasahiro Yamada 
hash_ptr(const void * ptr)23*f93d6bfbSMasahiro Yamada static inline unsigned int hash_ptr(const void *ptr)
24*f93d6bfbSMasahiro Yamada {
25*f93d6bfbSMasahiro Yamada 	return hash_32((unsigned int)(unsigned long)ptr);
26*f93d6bfbSMasahiro Yamada }
27*f93d6bfbSMasahiro Yamada 
28a16219bdSMasahiro Yamada #endif /* HASH_H */
29