Linux 内核 v3.19 及以上版本中 arch_fast_hash 的替代品

Linux 内核 v3.19 及以上版本中 arch_fast_hash 的替代品

为了找到给定缓冲区的哈希值,我使用了arch_fast_hash在 Linux 内核 v3.16 中声明include/linux/hash.h并在中定义的函数linux/lib/hash.c

但在 Linux 内核 v3.19 中,该函数消失了。虽然有一些新函数和宏,但没有适当的文档。

有人能帮我提供适当的散列技术吗?或者arch_fast_hashv3.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);

相关内容