Alternative zu arch_fast_hash im Linux-Kernel v3.19 und höher

Alternative zu arch_fast_hash im Linux-Kernel v3.19 und höher

Um den Hashwert eines bestimmten Puffers zu finden, habe ich arch_fast_hashdie im Linux-Kernel v3.16 vorhandene Funktion verwendet, die in deklariert include/linux/hash.hund in definiert ist linux/lib/hash.c.

Aber im Linux-Kernel v3.19 ist diese Funktion nicht mehr vorhanden. Es gibt zwar einige neue Funktionen und Makros, aber ohne entsprechende Dokumentation.

Kann mir bitte jemand mit einer geeigneten Hashing-Technik helfen oder sagen, was die Alternative arch_fast_hashin v3.19 ist.

Und gibt es eine schnellere Alternative zu Hash?

Links

include/linux/hash.h im Linux-Kernel v3.16
include/linux/hash.h im Linux-Kernel v3.19

Antwort1

Versuchen:

#include <linux/jhash.h>

und verwenden Sie diese Funktion:

/* 
* 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);

verwandte Informationen