cvs commit: src/sys/libkern crc32.c src/sys/sys systm.h

Marcel Moolenaar marcel at FreeBSD.org
Wed Apr 27 15:26:45 PDT 2005


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


More information about the cvs-src mailing list