Date: Wed, 27 Apr 2005 22:26:45 +0000 (UTC) From: Marcel Moolenaar <marcel@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/libkern crc32.c src/sys/sys systm.h Message-ID: <200504272226.j3RMQjNe068620@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
marcel 2005-04-27 22:26:45 UTC FreeBSD src repository Modified files: sys/libkern crc32.c sys/sys systm.h Log: Refactor the CRC-32 code to enhance its usability. Move the actual CRC logic to a new function: crc32_raw() that obtains the initial CRC value as well as leaves any post-processing to the caller. As such, it can be used when the initial CRC value is not ~0U or when the final CRC value does need to be inverted (bitwise). It also means that crc32_raw() can be called repeatedly when the data is not available as a single block, such as for scatter/gather lists and the likes. Avoid the additional call overhead incured by the refactoring by moving the implementation off crc32() to sys/systm.h and making it inlinable. Since crc32_raw() is itself trivial and since it may be used in loops that iterate over fragments, having it available for inlining can be beneficial. Hence, move its implementation to sys/systm.h as well. Keep the original implementation of crc32() in libkern/crc32.c for documentation purposes (as a comment of course). Triggered by: Jose M Rodriguez (josemi at freebsd dot jazztel dot es) Discussed on: current@ Tested on: amd64, ia64 (BVO having GPT partitions) Jargon file candidate: BVO = By Virtue Of :-) Revision Changes Path 1.4 +18 -15 src/sys/libkern/crc32.c 1.233 +21 -1 src/sys/sys/systm.h
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200504272226.j3RMQjNe068620>