为了找到给定缓冲区的哈希值,我使用了arch_fast_hash
在 Linux 内核 v3.16 中声明include/linux/hash.h
并在中定义的函数linux/lib/hash.c
。
但在 Linux 内核 v3.19 中,该函数消失了。虽然有一些新函数和宏,但没有适当的文档。
有人能帮我提供适当的散列技术吗?或者arch_fast_hash
v3.19 中有什么替代方案。
还有没有比哈希更快的替代方案?
链接
Linux 内核 v3.16 中的 include/linux/hash.h
Linux 内核 v3.19 中的 include/linux/hash.h
答案1
尝试:
#include <linux/jhash.h>
并使用此功能:
/*
* jhash - hash an arbitrary key
* @k: sequence of bytes as key
* @length: the length of the key
* @initval: the previous hash, or an arbitray value
*
* The generic version, hashes an arbitrary sequence of bytes.
* No alignment or length assumptions are made about the input key.
* Returns the hash value of the key. The result depends on endianness.
*/
u32 jhash(const void *key, u32 length, u32 initval);