]>
Commit | Line | Data |
---|---|---|
71ae8aac FF |
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 <[email protected]> | |
8 | * Copyright 2013 Daniel Borkmann <[email protected]> | |
9 | * Copyright 2013 Thomas Graf <[email protected]> | |
10 | * Licensed under the GNU General Public License, version 2.0 (GPLv2) | |
11 | */ | |
12 | ||
13 | #include <linux/jhash.h> | |
14 | #include <linux/hash.h> | |
23721754 | 15 | #include <linux/cache.h> |
71ae8aac FF |
16 | |
17 | static struct fast_hash_ops arch_hash_ops __read_mostly = { | |
18 | .hash = jhash, | |
19 | .hash2 = jhash2, | |
20 | }; | |
21 | ||
22 | u32 arch_fast_hash(const void *data, u32 len, u32 seed) | |
23 | { | |
24 | return arch_hash_ops.hash(data, len, seed); | |
25 | } | |
26 | EXPORT_SYMBOL_GPL(arch_fast_hash); | |
27 | ||
28 | u32 arch_fast_hash2(const u32 *data, u32 len, u32 seed) | |
29 | { | |
30 | return arch_hash_ops.hash2(data, len, seed); | |
31 | } | |
32 | EXPORT_SYMBOL_GPL(arch_fast_hash2); | |
33 | ||
34 | static int __init hashlib_init(void) | |
35 | { | |
36 | setup_arch_fast_hash(&arch_hash_ops); | |
37 | return 0; | |
38 | } | |
39 | early_initcall(hashlib_init); |