Module Name: src
Committed By: snj
Date: Sun May 3 17:31:42 UTC 2009
Modified Files:
src/common/dist/zlib [netbsd-5]: zlib.h
src/sys/lib/libkern [netbsd-5]: crc32.c libkern.h
src/sys/lib/libsa [netbsd-5]: cread.c
src/sys/lib/libz [netbsd-5]: Makefile
Log Message:
Pull up following revision(s) (requested by tls in ticket #611):
common/dist/zlib/zlib.h: revision 1.3
sys/lib/libkern/crc32.c: revision 1.2
sys/lib/libkern/libkern.h: revision 1.90 via patch
sys/lib/libsa/cread.c: revision 1.23
sys/lib/libz/Makefile: revision 1.16
Fix build problems caused by crc32 addition to libkern. Also, this makes
the i386 bootblocks about 2K smaller than they were before we monkeyed
with crc32 at all.
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.2.34.1 src/common/dist/zlib/zlib.h
cvs rdiff -u -r1.4.4.2 -r1.4.4.3 src/sys/lib/libkern/crc32.c
cvs rdiff -u -r1.82.4.1 -r1.82.4.2 src/sys/lib/libkern/libkern.h
cvs rdiff -u -r1.21 -r1.21.14.1 src/sys/lib/libsa/cread.c
cvs rdiff -u -r1.15 -r1.15.44.1 src/sys/lib/libz/Makefile
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/common/dist/zlib/zlib.h
diff -u src/common/dist/zlib/zlib.h:1.2 src/common/dist/zlib/zlib.h:1.2.34.1
--- src/common/dist/zlib/zlib.h:1.2 Mon Jan 16 17:02:29 2006
+++ src/common/dist/zlib/zlib.h Sun May 3 17:31:41 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: zlib.h,v 1.2 2006/01/16 17:02:29 christos Exp $ */
+/* $NetBSD: zlib.h,v 1.2.34.1 2009/05/03 17:31:41 snj Exp $ */
/* zlib.h -- interface of the 'zlib' general purpose compression library
version 1.2.3, July 18th, 2005
@@ -1284,7 +1284,9 @@
seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.
*/
+#if !defined(_KERNEL) && !defined(_STANDALONE)
ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
+#endif
/*
Update a running CRC-32 with the bytes buf[0..len-1] and return the
updated CRC-32. If buf is NULL, this function returns the required initial
Index: src/sys/lib/libkern/crc32.c
diff -u src/sys/lib/libkern/crc32.c:1.4.4.2 src/sys/lib/libkern/crc32.c:1.4.4.3
--- src/sys/lib/libkern/crc32.c:1.4.4.2 Sun May 3 17:24:45 2009
+++ src/sys/lib/libkern/crc32.c Sun May 3 17:31:42 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: crc32.c,v 1.4.4.2 2009/05/03 17:24:45 snj Exp $ */
+/* $NetBSD: crc32.c,v 1.4.4.3 2009/05/03 17:31:42 snj Exp $ */
/* crc32.c -- compute the CRC-32 of a data stream
*
@@ -30,6 +30,7 @@
/* ========================================================================
* Tables of CRC-32s of all single-byte values, made by make_crc_table().
*/
+#include <lib/libkern/libkern.h>
#include "crc32.h"
#if BYTE_ORDER == LITTLE_ENDIAN
@@ -40,10 +41,7 @@
#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4
/* ========================================================================= */
-uint32_t crc32(
- uint32_t crc,
- const unsigned char *buf,
- unsigned len)
+uint32_t crc32(uint32_t crc, const uint8_t *buf, size_t len)
{
register u4 c;
register const u4 *buf4;
Index: src/sys/lib/libkern/libkern.h
diff -u src/sys/lib/libkern/libkern.h:1.82.4.1 src/sys/lib/libkern/libkern.h:1.82.4.2
--- src/sys/lib/libkern/libkern.h:1.82.4.1 Sun May 3 17:24:45 2009
+++ src/sys/lib/libkern/libkern.h Sun May 3 17:31:42 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: libkern.h,v 1.82.4.1 2009/05/03 17:24:45 snj Exp $ */
+/* $NetBSD: libkern.h,v 1.82.4.2 2009/05/03 17:31:42 snj Exp $ */
/*-
* Copyright (c) 1992, 1993
@@ -337,7 +337,7 @@
size_t strlcat __P((char *, const char *, size_t));
int strncasecmp __P((const char *, const char *, size_t));
u_long strtoul __P((const char *, char **, int));
-uint32_t crc32(uint32_t, const unsigned char *, unsigned);
+uint32_t crc32(uint32_t, const uint8_t *, size_t);
long long strtoll __P((const char *, char **, int));
unsigned long long strtoull __P((const char *, char **, int));
uintmax_t strtoumax __P((const char *, char **, int));
Index: src/sys/lib/libsa/cread.c
diff -u src/sys/lib/libsa/cread.c:1.21 src/sys/lib/libsa/cread.c:1.21.14.1
--- src/sys/lib/libsa/cread.c:1.21 Tue Mar 25 21:23:50 2008
+++ src/sys/lib/libsa/cread.c Sun May 3 17:31:42 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: cread.c,v 1.21 2008/03/25 21:23:50 christos Exp $ */
+/* $NetBSD: cread.c,v 1.21.14.1 2009/05/03 17:31:42 snj Exp $ */
/*
* Copyright (c) 1996
@@ -86,6 +86,35 @@
void zcfree __P((void *, void *));
void zmemcpy __P((unsigned char *, unsigned char *, unsigned int));
+/*
+ * The libkern version of this function uses an 8K set of tables.
+ * This is the double-loop version of LE CRC32 from if_ethersubr,
+ * lightly modified -- it is 200 bytes smaller than the version using
+ * a 4-bit table and at least 8K smaller than the libkern version.
+ */
+#ifndef ETHER_CRC_POLY_LE
+#define ETHER_CRC_POLY_LE 0xedb88320
+#endif
+uint32_t
+crc32(uint32_t crc, const uint8_t *const buf, size_t len)
+{
+ uint32_t c, carry;
+ size_t i, j;
+
+ crc = 0xffffffffU ^ crc;
+ for (i = 0; i < len; i++) {
+ c = buf[i];
+ for (j = 0; j < 8; j++) {
+ carry = ((crc & 0x01) ? 1 : 0) ^ (c & 0x01);
+ crc >>= 1;
+ c >>= 1;
+ if (carry) {
+ crc = (crc ^ ETHER_CRC_POLY_LE);
+ }
+ }
+ }
+ return (crc ^ 0xffffffffU);
+}
/*
* compression utilities
Index: src/sys/lib/libz/Makefile
diff -u src/sys/lib/libz/Makefile:1.15 src/sys/lib/libz/Makefile:1.15.44.1
--- src/sys/lib/libz/Makefile:1.15 Sat Jun 23 10:50:24 2007
+++ src/sys/lib/libz/Makefile Sun May 3 17:31:42 2009
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.15 2007/06/23 10:50:24 isaki Exp $
+# $NetBSD: Makefile,v 1.15.44.1 2009/05/03 17:31:42 snj Exp $
LIB= z
NOPIC= # defined
@@ -11,9 +11,9 @@
.PATH.c: ${ZDISTDIR} ${.PARSEDIR}
# files to be copied down from libz.
-LIBZSRCS= adler32.c compress.c crc32.c deflate.c infback.c inffast.c \
+LIBZSRCS= adler32.c compress.c deflate.c infback.c inffast.c \
inflate.c inftrees.c trees.c uncompr.c
-LIBZHDRS= crc32.h deflate.h inffast.h inffixed.h inflate.h inftrees.h \
+LIBZHDRS= deflate.h inffast.h inffixed.h inflate.h inftrees.h \
trees.h zconf.h zlib.h
# Other stuff