X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fcrc%2Fcrc.h;h=ba9f039c2958f8dc8eb358eade94069d340144ea;hp=25789b7712b7d307b394a6a246109b0bd003cc99;hb=ce4660aa49404530a608a37754fae16fbb3fde02;hpb=2c148ec2ad0459d29ba19ec5b1c5515717cc8d80 diff --git a/ccan/crc/crc.h b/ccan/crc/crc.h index 25789b77..ba9f039c 100644 --- a/ccan/crc/crc.h +++ b/ccan/crc/crc.h @@ -4,65 +4,9 @@ #include #include -/** - * crc32c - Castagnoli 32 bit crc of string of bytes - * @start_crc: the initial crc (usually 0) - * @buf: pointer to bytes - * @size: length of buffer - * - * If you don't know what crc32 to use, use this one: it's the best. - * - * @Article{castagnoli-crc, - * author = { Guy Castagnoli and Stefan Braeuer and Martin Herrman}, - * title = {{Optimization of Cyclic Redundancy-Check Codes with 24 - * and 32 Parity Bits}}, - * journal = IEEE Transactions on Communication, - * year = {1993}, - * volume = {41}, - * number = {6}, - * pages = {}, - * month = {June}, - *} - * 32 bit CRC checksum using polynomial - * X^32+X^28+X^27+X^26+X^25+X^23+X^22+X^20+X^19+X^18+X^14+X^13+X^11+X^10+X^9+X^8+X^6+X^0. - * - * You can calculate the CRC of non-contiguous arrays by passing @start_crc - * as 0 the first time, and the current crc result from then on. - * - * Example: - * #include - * ... - * // Check that iovec has the crc we expect (Castagnoli version) - * static bool check_crc(uint32_t expected, const struct iovec *iov, int l) - * { - * uint32_t crc = 0; - * while (l >= 0) { - * crc = crc32c(crc, iov->iov_base, iov->iov_len); - * iov++; - * } - * return crc == expected; - * } - */ -uint32_t crc32c(uint32_t start_crc, const void *buf, size_t size); - -/** - * crc32c_table - Get the Castagnoli CRC table - * - * For special effects, you might want direct access to the table; this is - * the standard 256-entry table for this algorithm. - * - * In theory, this might need to malloc(), and thus return NULL. - * - * Example: - * // This dumb code only handles Castagnoli, so assert that here. - * static void check_user_crc_table(const uint32_t *usertab) - * { - * const uint32_t *ctab = crc32c_table(); - * if (!ctab || memcmp(ctab, usertab, 1024) != 0) - * abort(); - * } - */ -const uint32_t *crc32c_table(void); +/* Note: the crc32c function has been *fixed* (it gave wrong results!) and + * moved to the ccan/crc32c module. You probably want that if you're + * just after a "good" crc function. */ /** * crc32_ieee - IEEE 802.3 32 bit crc of string of bytes