summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikolay Borisov <nborisov@suse.com>2018-01-08 11:45:04 +0200
committerDavid Sterba <dsterba@suse.com>2018-03-26 15:09:38 +0200
commitdf91f56adce1fc131e05368a0ad0ea72afd9a79a (patch)
tree2406ccfaa0fb50877c45d2cdca364a1f3c2f48c0
parent3e72ee8874f42ddbe72a090044f7c03740158183 (diff)
downloadlinux-df91f56adce1fc131e05368a0ad0ea72afd9a79a.tar.gz
linux-df91f56adce1fc131e05368a0ad0ea72afd9a79a.tar.bz2
linux-df91f56adce1fc131e05368a0ad0ea72afd9a79a.zip
libcrc32c: Add crc32c_impl function
This function returns a string with the currently in-use implementation of the crc32c algorithm, i.e crc32c-generic (for unoptimised, generic implementation) or crc32c-intel for the sse optimised version. This will be used by btrfs. Signed-off-by: Nikolay Borisov <nborisov@suse.com> Acked-by: Herbert Xu <herbert@gondor.apana.org.au> [ use crypto_shash_driver_name as suggested by Herbert ] Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--include/linux/crc32c.h1
-rw-r--r--lib/libcrc32c.c6
2 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/crc32c.h b/include/linux/crc32c.h
index 357ae4611a45..bd21af828ff6 100644
--- a/include/linux/crc32c.h
+++ b/include/linux/crc32c.h
@@ -5,6 +5,7 @@
#include <linux/types.h>
extern u32 crc32c(u32 crc, const void *address, unsigned int length);
+extern const char *crc32c_impl(void);
/* This macro exists for backwards-compatibility. */
#define crc32c_le crc32c
diff --git a/lib/libcrc32c.c b/lib/libcrc32c.c
index 9f79547d1b97..f0a2934605bf 100644
--- a/lib/libcrc32c.c
+++ b/lib/libcrc32c.c
@@ -71,6 +71,12 @@ static void __exit libcrc32c_mod_fini(void)
crypto_free_shash(tfm);
}
+const char *crc32c_impl(void)
+{
+ return crypto_shash_driver_name(tfm);
+}
+EXPORT_SYMBOL(crc32c_impl);
+
module_init(libcrc32c_mod_init);
module_exit(libcrc32c_mod_fini);