svn commit: r350670 - in head/sys: conf contrib/zlib dev/zlib modules/crypto modules/mxge/mxge modules/zfs modules/zlib

Xin LI delphij at FreeBSD.org
Wed Aug 7 01:41:21 UTC 2019


Author: delphij
Date: Wed Aug  7 01:41:17 2019
New Revision: 350670
URL: https://svnweb.freebsd.org/changeset/base/350670

Log:
  Expose zlib's utility functions in Z_SOLO library when building kernel.
  This allows kernel code to reuse zlib's implementation.
  
  PR:		229763
  Reviewed by:	Yoshihiro Ota <ota j email ne jp>
  Relnotes:	yes
  Differential Revision:	https://reviews.freebsd.org/D21156

Modified:
  head/sys/conf/files
  head/sys/conf/kern.pre.mk
  head/sys/conf/kmod.mk
  head/sys/contrib/zlib/deflate.c
  head/sys/contrib/zlib/infback.c
  head/sys/contrib/zlib/inflate.c
  head/sys/contrib/zlib/zconf.h
  head/sys/contrib/zlib/zlib.h
  head/sys/contrib/zlib/zutil.h
  head/sys/dev/zlib/zcalloc.c
  head/sys/dev/zlib/zcalloc.h
  head/sys/modules/crypto/Makefile
  head/sys/modules/mxge/mxge/Makefile
  head/sys/modules/zfs/Makefile
  head/sys/modules/zlib/Makefile

Modified: head/sys/conf/files
==============================================================================
--- head/sys/conf/files	Wed Aug  7 01:34:41 2019	(r350669)
+++ head/sys/conf/files	Wed Aug  7 01:41:17 2019	(r350670)
@@ -273,7 +273,7 @@ cddl/contrib/opensolaris/uts/common/os/callb.c				opti
 cddl/contrib/opensolaris/uts/common/os/fm.c				optional zfs compile-with "${ZFS_C}"
 cddl/contrib/opensolaris/uts/common/os/list.c				optional zfs compile-with "${ZFS_C}"
 cddl/contrib/opensolaris/uts/common/os/nvpair_alloc_system.c		optional zfs compile-with "${ZFS_C}"
-cddl/contrib/opensolaris/uts/common/zmod/zmod.c				optional zfs compile-with "${ZFS_C} ${ZLIB_CFLAGS}"
+cddl/contrib/opensolaris/uts/common/zmod/zmod.c				optional zfs compile-with "${ZFS_C}"
 # zfs lua support
 cddl/contrib/opensolaris/uts/common/fs/zfs/lua/lapi.c			optional zfs compile-with "${ZFS_C}"
 cddl/contrib/opensolaris/uts/common/fs/zfs/lua/lauxlib.c		optional zfs compile-with "${ZFS_C}"
@@ -2443,8 +2443,7 @@ mwlboot.fw		optional mwlfw					\
 	compile-with	"${NORMAL_FW}"					\
 	no-obj no-implicit-rule						\
 	clean		"mwlboot.fw"
-dev/mxge/if_mxge.c		optional mxge pci \
-	compile-with "${ZLIB_C}"
+dev/mxge/if_mxge.c		optional mxge pci
 dev/mxge/mxge_eth_z8e.c		optional mxge pci
 dev/mxge/mxge_ethp_z8e.c	optional mxge pci
 dev/mxge/mxge_rss_eth_z8e.c	optional mxge pci
@@ -3999,35 +3998,32 @@ libkern/timingsafe_bcmp.c	standard
 libkern/zlib.c			optional crypto | geom_uzip | ipsec | \
 	ipsec_support | mxge | netgraph_deflate | ddb_ctf | gzio
 contrib/zlib/adler32.c	optional crypto | geom_uzip | ipsec | \
+	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
+contrib/zlib/compress.c	optional crypto | geom_uzip | ipsec | \
 	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
-	compile-with "${ZLIB_C}"
+	compile-with "${NORMAL_C} -Wno-cast-qual"
 contrib/zlib/crc32.c	optional crypto | geom_uzip | ipsec | \
-	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
-	compile-with "${ZLIB_C} -Wno-cast-qual"
+	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
 contrib/zlib/deflate.c	optional crypto | geom_uzip | ipsec | \
 	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
-	compile-with "${ZLIB_C} -Wno-cast-qual"
+	compile-with "${NORMAL_C} -Wno-cast-qual"
 contrib/zlib/inffast.c	optional crypto | geom_uzip | ipsec | \
-	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
-	compile-with "${ZLIB_C}"
+	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
 contrib/zlib/inflate.c	optional crypto | geom_uzip | ipsec | \
-	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
-	compile-with "${ZLIB_C}"
+	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
 contrib/zlib/inftrees.c	optional crypto | geom_uzip | ipsec | \
-	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
-	compile-with "${ZLIB_C}"
+	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
 contrib/zlib/trees.c		optional crypto | geom_uzip | ipsec | \
+	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
+contrib/zlib/uncompr.c	optional crypto | geom_uzip | ipsec | \
 	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
-	compile-with "${ZLIB_C}"
+	compile-with "${NORMAL_C} -Wno-cast-qual"
 contrib/zlib/zutil.c		optional crypto | geom_uzip | ipsec | \
-	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
-	compile-with "${ZLIB_C}"
+	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
 dev/zlib/zlib_mod.c		optional crypto | geom_uzip | ipsec | \
-	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
-	compile-with "${ZLIB_C}"
+	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
 dev/zlib/zcalloc.c		optional crypto | geom_uzip | ipsec | \
-	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \
-	compile-with "${ZLIB_C}"
+	ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib
 net/altq/altq_cbq.c		optional altq
 net/altq/altq_codel.c		optional altq
 net/altq/altq_hfsc.c		optional altq
@@ -4780,8 +4776,7 @@ opencrypto/crypto.c		optional crypto | ipsec | ipsec_s
 opencrypto/cryptodev.c		optional cryptodev
 opencrypto/cryptodev_if.m	optional crypto | ipsec | ipsec_support
 opencrypto/cryptosoft.c		optional crypto | ipsec | ipsec_support
-opencrypto/cryptodeflate.c	optional crypto | ipsec | ipsec_support \
-	compile-with "${ZLIB_C}"
+opencrypto/cryptodeflate.c	optional crypto | ipsec | ipsec_support
 opencrypto/gmac.c		optional crypto | ipsec | ipsec_support
 opencrypto/gfmult.c		optional crypto | ipsec | ipsec_support
 opencrypto/rmd160.c		optional crypto | ipsec | ipsec_support

Modified: head/sys/conf/kern.pre.mk
==============================================================================
--- head/sys/conf/kern.pre.mk	Wed Aug  7 01:34:41 2019	(r350669)
+++ head/sys/conf/kern.pre.mk	Wed Aug  7 01:41:17 2019	(r350670)
@@ -173,10 +173,6 @@ NORMAL_FW= uudecode -o ${.TARGET} ${.ALLSRC}
 NORMAL_FWO= ${LD} -b binary --no-warn-mismatch -d -warn-common -r \
 	-m ${LD_EMULATION} -o ${.TARGET} ${.ALLSRC:M*.fw}
 
-# for zlib in the kernel
-ZLIB_CFLAGS+= -DZ_SOLO
-ZLIB_C= ${CC} -c ${ZLIB_CFLAGS} ${CFLAGS} ${.IMPSRC}
-
 # for ZSTD in the kernel (include zstd/lib/freebsd before other CFLAGS)
 ZSTD_C= ${CC} -c -DZSTD_HEAPMODE=1 -I$S/contrib/zstd/lib/freebsd ${CFLAGS} -I$S/contrib/zstd/lib -I$S/contrib/zstd/lib/common ${WERROR} -Wno-inline -Wno-missing-prototypes ${PROF} -U__BMI__ ${.IMPSRC}
 

Modified: head/sys/conf/kmod.mk
==============================================================================
--- head/sys/conf/kmod.mk	Wed Aug  7 01:34:41 2019	(r350669)
+++ head/sys/conf/kmod.mk	Wed Aug  7 01:41:17 2019	(r350670)
@@ -104,8 +104,6 @@ __KLD_SHARED=yes
 __KLD_SHARED=no
 .endif
 
-ZLIB_CFLAGS+=	-DZ_SOLO
-
 .if !empty(CFLAGS:M-O[23s]) && empty(CFLAGS:M-fno-strict-aliasing)
 CFLAGS+=	-fno-strict-aliasing
 .endif

Modified: head/sys/contrib/zlib/deflate.c
==============================================================================
--- head/sys/contrib/zlib/deflate.c	Wed Aug  7 01:34:41 2019	(r350669)
+++ head/sys/contrib/zlib/deflate.c	Wed Aug  7 01:41:17 2019	(r350670)
@@ -266,7 +266,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowB
 
     strm->msg = Z_NULL;
     if (strm->zalloc == (alloc_func)0) {
-#ifdef Z_SOLO
+#if defined(Z_SOLO) && !defined(_KERNEL)
         return Z_STREAM_ERROR;
 #else
         strm->zalloc = zcalloc;
@@ -274,7 +274,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowB
 #endif
     }
     if (strm->zfree == (free_func)0)
-#ifdef Z_SOLO
+#if defined(Z_SOLO) && !defined(_KERNEL)
         return Z_STREAM_ERROR;
 #else
         strm->zfree = zcfree;

Modified: head/sys/contrib/zlib/infback.c
==============================================================================
--- head/sys/contrib/zlib/infback.c	Wed Aug  7 01:34:41 2019	(r350669)
+++ head/sys/contrib/zlib/infback.c	Wed Aug  7 01:41:17 2019	(r350670)
@@ -42,7 +42,7 @@ int stream_size;
         return Z_STREAM_ERROR;
     strm->msg = Z_NULL;                 /* in case we return an error */
     if (strm->zalloc == (alloc_func)0) {
-#ifdef Z_SOLO
+#if defined(Z_SOLO) && !defined(_KERNEL)
         return Z_STREAM_ERROR;
 #else
         strm->zalloc = zcalloc;
@@ -50,7 +50,7 @@ int stream_size;
 #endif
     }
     if (strm->zfree == (free_func)0)
-#ifdef Z_SOLO
+#if defined(Z_SOLO) && !defined(_KERNEL)
         return Z_STREAM_ERROR;
 #else
     strm->zfree = zcfree;

Modified: head/sys/contrib/zlib/inflate.c
==============================================================================
--- head/sys/contrib/zlib/inflate.c	Wed Aug  7 01:34:41 2019	(r350669)
+++ head/sys/contrib/zlib/inflate.c	Wed Aug  7 01:41:17 2019	(r350670)
@@ -207,7 +207,7 @@ int stream_size;
     if (strm == Z_NULL) return Z_STREAM_ERROR;
     strm->msg = Z_NULL;                 /* in case we return an error */
     if (strm->zalloc == (alloc_func)0) {
-#ifdef Z_SOLO
+#if defined(Z_SOLO) && !defined(_KERNEL)
         return Z_STREAM_ERROR;
 #else
         strm->zalloc = zcalloc;
@@ -215,7 +215,7 @@ int stream_size;
 #endif
     }
     if (strm->zfree == (free_func)0)
-#ifdef Z_SOLO
+#if defined(Z_SOLO) && !defined(_KERNEL)
         return Z_STREAM_ERROR;
 #else
         strm->zfree = zcfree;

Modified: head/sys/contrib/zlib/zconf.h
==============================================================================
--- head/sys/contrib/zlib/zconf.h	Wed Aug  7 01:34:41 2019	(r350669)
+++ head/sys/contrib/zlib/zconf.h	Wed Aug  7 01:41:17 2019	(r350670)
@@ -8,6 +8,12 @@
 #ifndef ZCONF_H
 #define ZCONF_H
 
+#ifdef __FreeBSD__
+#ifdef _KERNEL
+#define Z_SOLO
+#endif
+#endif
+
 /*
  * If you *really* need a unique prefix for all types and library functions,
  * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
@@ -30,7 +36,7 @@
 #  define adler32_combine       z_adler32_combine
 #  define adler32_combine64     z_adler32_combine64
 #  define adler32_z             z_adler32_z
-#  ifndef Z_SOLO
+#  if !defined(Z_SOLO) && !defined(_KERNEL)
 #    define compress              z_compress
 #    define compress2             z_compress2
 #    define compressBound         z_compressBound
@@ -125,12 +131,12 @@
 #  define inflate_copyright     z_inflate_copyright
 #  define inflate_fast          z_inflate_fast
 #  define inflate_table         z_inflate_table
-#  ifndef Z_SOLO
+#  if !defined(Z_SOLO) && !defined(_KERNEL)
 #    define uncompress            z_uncompress
 #    define uncompress2           z_uncompress2
 #  endif
 #  define zError                z_zError
-#  ifndef Z_SOLO
+#  if !defined(Z_SOLO) && !defined(_KERNEL)
 #    define zcalloc               z_zcalloc
 #    define zcfree                z_zcfree
 #  endif

Modified: head/sys/contrib/zlib/zlib.h
==============================================================================
--- head/sys/contrib/zlib/zlib.h	Wed Aug  7 01:34:41 2019	(r350669)
+++ head/sys/contrib/zlib/zlib.h	Wed Aug  7 01:41:17 2019	(r350670)
@@ -1213,7 +1213,7 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
      27-31: 0 (reserved)
  */
 
-#ifndef Z_SOLO
+#if !defined(Z_SOLO) || defined(_KERNEL)
 
                         /* utility functions */
 
@@ -1288,6 +1288,9 @@ ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest,   uLo
    length of the source is *sourceLen.  On return, *sourceLen is the number of
    source bytes consumed.
 */
+#endif /* !Z_SOLO || _KERNEL */
+
+#ifndef Z_SOLO
 
                         /* gzip file access functions */
 

Modified: head/sys/contrib/zlib/zutil.h
==============================================================================
--- head/sys/contrib/zlib/zutil.h	Wed Aug  7 01:34:41 2019	(r350669)
+++ head/sys/contrib/zlib/zutil.h	Wed Aug  7 01:41:17 2019	(r350670)
@@ -256,7 +256,7 @@ extern z_const char * const z_errmsg[10]; /* indexed b
 #  define Tracecv(c,x)
 #endif
 
-#ifndef Z_SOLO
+#if !defined(Z_SOLO) || defined(_KERNEL)
    voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items,
                                     unsigned size));
    void ZLIB_INTERNAL zcfree  OF((voidpf opaque, voidpf ptr));

Modified: head/sys/dev/zlib/zcalloc.c
==============================================================================
--- head/sys/dev/zlib/zcalloc.c	Wed Aug  7 01:34:41 2019	(r350669)
+++ head/sys/dev/zlib/zcalloc.c	Wed Aug  7 01:41:17 2019	(r350670)
@@ -24,6 +24,13 @@ zcalloc_nowait(void *nil, u_int items, u_int size)
 	return mallocarray(items, size, M_ZLIB, M_NOWAIT);
 }
 
+void *
+zcalloc(void *nil, u_int items, u_int size)
+{
+
+	return zcalloc_nowait(nil, items, size);
+}
+
 void
 zcfree(void *nil, void *ptr)
 {

Modified: head/sys/dev/zlib/zcalloc.h
==============================================================================
--- head/sys/dev/zlib/zcalloc.h	Wed Aug  7 01:34:41 2019	(r350669)
+++ head/sys/dev/zlib/zcalloc.h	Wed Aug  7 01:41:17 2019	(r350670)
@@ -6,8 +6,9 @@
 #ifndef _DEV_ZLIB_ZCALLOC_
 #define _DEV_ZLIB_ZCALLOC_
 
-void * zcalloc_waitok(void *nil, u_int items, u_int size);
-void * zcalloc_nowait(void *nil, u_int items, u_int size);
-void zcfree(void *nil, void *ptr);
+#include <contrib/zlib/zutil.h>
+#undef local
 
+void *zcalloc_waitok(void *, u_int, u_int);
+void *zcalloc_nowait(void *, u_int, u_int);
 #endif

Modified: head/sys/modules/crypto/Makefile
==============================================================================
--- head/sys/modules/crypto/Makefile	Wed Aug  7 01:34:41 2019	(r350669)
+++ head/sys/modules/crypto/Makefile	Wed Aug  7 01:41:17 2019	(r350670)
@@ -23,7 +23,6 @@ KMOD	= crypto
 SRCS	= crypto.c cryptodev_if.c
 SRCS	+= criov.c cryptosoft.c xform.c
 SRCS	+= cast.c cryptodeflate.c rmd160.c rijndael-alg-fst.c rijndael-api.c rijndael-api-fst.c
-CFLAGS.cryptodeflate.c	+= ${ZLIB_CFLAGS}
 SRCS	+= skipjack.c bf_enc.c bf_ecb.c bf_skey.c
 SRCS	+= camellia.c camellia-api.c
 SRCS	+= des_ecb.c des_enc.c des_setkey.c

Modified: head/sys/modules/mxge/mxge/Makefile
==============================================================================
--- head/sys/modules/mxge/mxge/Makefile	Wed Aug  7 01:34:41 2019	(r350669)
+++ head/sys/modules/mxge/mxge/Makefile	Wed Aug  7 01:41:17 2019	(r350670)
@@ -5,6 +5,4 @@
 KMOD=	if_mxge
 SRCS=	if_mxge.c device_if.h bus_if.h pci_if.h opt_inet.h opt_inet6.h
 
-CFLAGS.if_mxge.c+= ${ZLIB_CFLAGS}
-
 .include <bsd.kmod.mk>

Modified: head/sys/modules/zfs/Makefile
==============================================================================
--- head/sys/modules/zfs/Makefile	Wed Aug  7 01:34:41 2019	(r350669)
+++ head/sys/modules/zfs/Makefile	Wed Aug  7 01:41:17 2019	(r350670)
@@ -56,7 +56,6 @@ SRCS+=	nvpair_alloc_system.c
 
 .PATH:	${SUNW}/uts/common/zmod
 SRCS+=	zmod.c
-CFLAGS.zmod.c+=	${ZLIB_CFLAGS}
 
 .PATH:	${SYSDIR}/crypto/sha2
 SRCS+=	sha256c.c sha512c.c

Modified: head/sys/modules/zlib/Makefile
==============================================================================
--- head/sys/modules/zlib/Makefile	Wed Aug  7 01:34:41 2019	(r350669)
+++ head/sys/modules/zlib/Makefile	Wed Aug  7 01:41:17 2019	(r350670)
@@ -11,15 +11,15 @@ SRCS=	zlib.c
 SRCS+=	zcalloc.c
 SRCS+=	zlib_mod.c
 SRCS+=	adler32.c
+SRCS+=	compress.c
 SRCS+=	crc32.c
 SRCS+=	deflate.c
 SRCS+=	inffast.c
 SRCS+=	inflate.c
 SRCS+=	inftrees.c
 SRCS+=	trees.c
+SRCS+=	uncompr.c
 SRCS+=	zutil.c
-
-CFLAGS+=${ZLIB_CFLAGS}
 
 CWARNFLAGS.compress.c+=-Wno-cast-qual # compress:49
 CWARNFLAGS.deflate.c+=-Wno-cast-qual # deflate.c:415


More information about the svn-src-all mailing list