diff --git a/include/spdk/crc32.h b/include/spdk/crc32.h index 83df6fdb6..a2032a25e 100644 --- a/include/spdk/crc32.h +++ b/include/spdk/crc32.h @@ -46,42 +46,6 @@ extern "C" { #endif -/** - * IEEE CRC-32 polynomial (bit reflected) - */ -#define SPDK_CRC32_POLYNOMIAL_REFLECT 0xedb88320UL - -/** - * CRC-32C (Castagnoli) polynomial (bit reflected) - */ -#define SPDK_CRC32C_POLYNOMIAL_REFLECT 0x82f63b78UL - -struct spdk_crc32_table { - uint32_t table[256]; -}; - -/** - * Initialize a CRC32 lookup table for a given polynomial. - * - * \param table Table to fill with precalculated CRC-32 data. - * \param polynomial_reflect Bit-reflected CRC-32 polynomial. - */ -void spdk_crc32_table_init(struct spdk_crc32_table *table, - uint32_t polynomial_reflect); - -/** - * Calculate a partial CRC-32 checksum. - * - * \param table CRC-32 table initialized with spdk_crc32_table_init(). - * \param buf Data buffer to checksum. - * \param len Length of buf in bytes. - * \param crc Previous CRC-32 value. - * \return Updated CRC-32 value. - */ -uint32_t spdk_crc32_update(const struct spdk_crc32_table *table, - const void *buf, size_t len, - uint32_t crc); - /** * Calculate a partial CRC-32 IEEE checksum. * diff --git a/lib/util/crc32.c b/lib/util/crc32.c index 6fbb004ce..34bb60b78 100644 --- a/lib/util/crc32.c +++ b/lib/util/crc32.c @@ -31,10 +31,11 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include "util_internal.h" #include "spdk/crc32.h" void -spdk_crc32_table_init(struct spdk_crc32_table *table, uint32_t polynomial_reflect) +crc32_table_init(struct spdk_crc32_table *table, uint32_t polynomial_reflect) { int i, j; uint32_t val; @@ -55,7 +56,7 @@ spdk_crc32_table_init(struct spdk_crc32_table *table, uint32_t polynomial_reflec #ifdef SPDK_HAVE_ARM_CRC uint32_t -spdk_crc32_update(const struct spdk_crc32_table *table, const void *buf, size_t len, uint32_t crc) +crc32_update(const struct spdk_crc32_table *table, const void *buf, size_t len, uint32_t crc) { size_t count; const uint64_t *dword_buf; @@ -79,7 +80,7 @@ spdk_crc32_update(const struct spdk_crc32_table *table, const void *buf, size_t #else uint32_t -spdk_crc32_update(const struct spdk_crc32_table *table, const void *buf, size_t len, uint32_t crc) +crc32_update(const struct spdk_crc32_table *table, const void *buf, size_t len, uint32_t crc) { const uint8_t *buf_u8 = buf; size_t i; diff --git a/lib/util/crc32_ieee.c b/lib/util/crc32_ieee.c index 2956e3fc6..9eb02fdd6 100644 --- a/lib/util/crc32_ieee.c +++ b/lib/util/crc32_ieee.c @@ -31,6 +31,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include "util_internal.h" #include "spdk/crc32.h" static struct spdk_crc32_table g_crc32_ieee_table; @@ -38,11 +39,11 @@ static struct spdk_crc32_table g_crc32_ieee_table; __attribute__((constructor)) static void spdk_crc32_ieee_init(void) { - spdk_crc32_table_init(&g_crc32_ieee_table, SPDK_CRC32_POLYNOMIAL_REFLECT); + crc32_table_init(&g_crc32_ieee_table, SPDK_CRC32_POLYNOMIAL_REFLECT); } uint32_t spdk_crc32_ieee_update(const void *buf, size_t len, uint32_t crc) { - return spdk_crc32_update(&g_crc32_ieee_table, buf, len, crc); + return crc32_update(&g_crc32_ieee_table, buf, len, crc); } diff --git a/lib/util/crc32c.c b/lib/util/crc32c.c index 9c2196085..eef4c1471 100644 --- a/lib/util/crc32c.c +++ b/lib/util/crc32c.c @@ -31,6 +31,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include "util_internal.h" #include "spdk/crc32.h" #ifdef SPDK_CONFIG_ISAL @@ -120,13 +121,13 @@ static struct spdk_crc32_table g_crc32c_table; __attribute__((constructor)) static void spdk_crc32c_init(void) { - spdk_crc32_table_init(&g_crc32c_table, SPDK_CRC32C_POLYNOMIAL_REFLECT); + crc32_table_init(&g_crc32c_table, SPDK_CRC32C_POLYNOMIAL_REFLECT); } uint32_t spdk_crc32c_update(const void *buf, size_t len, uint32_t crc) { - return spdk_crc32_update(&g_crc32c_table, buf, len, crc); + return crc32_update(&g_crc32c_table, buf, len, crc); } #endif diff --git a/lib/util/util_internal.h b/lib/util/util_internal.h new file mode 100644 index 000000000..655ef513d --- /dev/null +++ b/lib/util/util_internal.h @@ -0,0 +1,77 @@ +/*- + * BSD LICENSE + * + * Copyright (C) 2008-2012 Daisuke Aoyama . + * Copyright (c) Intel Corporation. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef SPDK_UTIL_INTERNAL_H +#define SPDK_UTIL_INTERNAL_H + +#include "spdk/stdinc.h" + +/** + * IEEE CRC-32 polynomial (bit reflected) + */ +#define SPDK_CRC32_POLYNOMIAL_REFLECT 0xedb88320UL + +/** + * CRC-32C (Castagnoli) polynomial (bit reflected) + */ +#define SPDK_CRC32C_POLYNOMIAL_REFLECT 0x82f63b78UL + +struct spdk_crc32_table { + uint32_t table[256]; +}; + +/** + * Initialize a CRC32 lookup table for a given polynomial. + * + * \param table Table to fill with precalculated CRC-32 data. + * \param polynomial_reflect Bit-reflected CRC-32 polynomial. + */ +void crc32_table_init(struct spdk_crc32_table *table, + uint32_t polynomial_reflect); + + +/** + * Calculate a partial CRC-32 checksum. + * + * \param table CRC-32 table initialized with crc32_table_init(). + * \param buf Data buffer to checksum. + * \param len Length of buf in bytes. + * \param crc Previous CRC-32 value. + * \return Updated CRC-32 value. + */ +uint32_t crc32_update(const struct spdk_crc32_table *table, + const void *buf, size_t len, + uint32_t crc); + +#endif /* SPDK_UTIL_INTERNAL_H */ diff --git a/test/make/check_so_deps.sh b/test/make/check_so_deps.sh index 103e3203a..37a8f719a 100755 --- a/test/make/check_so_deps.sh +++ b/test/make/check_so_deps.sh @@ -114,6 +114,10 @@ function confirm_abi_deps() { name = SPDK_LOG_THREAD [suppress_variable] name = SPDK_LOG_TRACE +[suppress_function] + name = spdk_crc32_table_init +[suppress_function] + name = spdk_crc32_update EOF for object in "$libdir"/libspdk_*.so; do