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 Yamadastatic 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 Yamadastatic 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 Yamadastatic 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