at v3.17 1.1 kB view raw
1/* General purpose hashing library 2 * 3 * That's a start of a kernel hashing library, which can be extended 4 * with further algorithms in future. arch_fast_hash{2,}() will 5 * eventually resolve to an architecture optimized implementation. 6 * 7 * Copyright 2013 Francesco Fusco <ffusco@redhat.com> 8 * Copyright 2013 Daniel Borkmann <dborkman@redhat.com> 9 * Copyright 2013 Thomas Graf <tgraf@redhat.com> 10 * Licensed under the GNU General Public License, version 2.0 (GPLv2) 11 */ 12 13#include <linux/jhash.h> 14#include <linux/hash.h> 15#include <linux/cache.h> 16 17static struct fast_hash_ops arch_hash_ops __read_mostly = { 18 .hash = jhash, 19 .hash2 = jhash2, 20}; 21 22u32 arch_fast_hash(const void *data, u32 len, u32 seed) 23{ 24 return arch_hash_ops.hash(data, len, seed); 25} 26EXPORT_SYMBOL_GPL(arch_fast_hash); 27 28u32 arch_fast_hash2(const u32 *data, u32 len, u32 seed) 29{ 30 return arch_hash_ops.hash2(data, len, seed); 31} 32EXPORT_SYMBOL_GPL(arch_fast_hash2); 33 34static int __init hashlib_init(void) 35{ 36 setup_arch_fast_hash(&arch_hash_ops); 37 return 0; 38} 39early_initcall(hashlib_init);