
Чтобы найти значение хэша заданного буфера, я использовал arch_fast_hash
функцию, присутствующую в ядре Linux v3.16, объявленную include/linux/hash.h
и определенную в linux/lib/hash.c
.
Но в ядре Linux v3.19 эта функция исчезла. Есть несколько новых функций и макросов, но без надлежащей документации.
Может ли кто-нибудь помочь мне с правильной техникой хеширования или какой есть альтернатива arch_fast_hash
в v3.19?
И есть ли более быстрая альтернатива хэшу?
Ссылки
include/linux/hash.h в ядре Linux v3.16
include/linux/hash.h в ядре Linux v3.19
решение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);