freebsd-dev/sys/libkern
Marcel Moolenaar ee6bcf1223 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 :-)
2005-04-27 22:26:45 +00:00
..
alpha /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-07 00:24:33 +00:00
arm /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-07 00:24:33 +00:00
ia64 /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-07 00:24:33 +00:00
arc4random.c
ashldi3.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
ashrdi3.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
bcd.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-07 00:24:33 +00:00
bcmp.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-07 00:24:33 +00:00
bsearch.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-07 00:24:33 +00:00
crc32.c Refactor the CRC-32 code to enhance its usability. Move the actual 2005-04-27 22:26:45 +00:00
divdi3.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
ffs.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
ffsl.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
fls.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
flsl.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
fnmatch.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-07 00:24:33 +00:00
gets.c We do want to print '\n'/'\r'. 2005-02-03 15:47:30 +00:00
iconv_converter_if.m /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-07 00:24:33 +00:00
iconv_xlat16.c Make msdosfs long filenames matching case insensitive again. 2003-12-08 08:32:20 +00:00
iconv_xlat.c
iconv.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-07 00:24:33 +00:00
index.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
inet_ntoa.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-07 00:24:33 +00:00
lshrdi3.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
mcount.c Move the kernel-specific logic to adjust frompc from MI to MD. For 2004-08-27 19:42:35 +00:00
moddi3.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
qdivrem.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
qsort_r.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-07 00:24:33 +00:00
qsort.c Copy qsort_r(3) from libc to libkern. 2004-07-15 23:58:23 +00:00
quad.h Fixed some style bugs (unsorting of prototypes in previous commit, and 2004-05-05 15:12:55 +00:00
random.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
rindex.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-07 00:24:33 +00:00
scanc.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
skpc.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
strcat.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-07 00:24:33 +00:00
strcmp.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
strcpy.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-07 00:24:33 +00:00
strdup.c
strlcat.c MFlibc: Remove extra closing parenthesis. 2005-02-03 15:51:39 +00:00
strlcpy.c MFlibc: Remove extra closing parenthesis. 2005-02-03 15:51:39 +00:00
strlen.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
strncmp.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-07 00:24:33 +00:00
strncpy.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
strsep.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
strspn.c Replace the current strspn() and strcspn() with significantly faster 2005-04-02 18:52:44 +00:00
strtol.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
strtoq.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
strtoul.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
strtouq.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
strvalid.c Because the argument to strvalid() is a size_t, use a size_t to iterate 2005-01-29 13:34:22 +00:00
ucmpdi2.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
udivdi3.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
umoddi3.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00