Index: contrib/zlib/crc32.h =================================================================== --- contrib/zlib/crc32.h +++ contrib/zlib/crc32.h @@ -1,3 +1,6 @@ +#ifndef CRC32_H +#define CRC32_H + /* crc32.h -- tables for rapid CRC calculation * Generated automatically by crc32.c */ @@ -439,3 +442,5 @@ #endif } }; + +#endif Index: contrib/zlib/deflate.c =================================================================== --- contrib/zlib/deflate.c +++ contrib/zlib/deflate.c @@ -1622,8 +1622,10 @@ /* Maximum stored block length in deflate format (not including header). */ #define MAX_STORED 65535 +#if !defined(_KERNEL) /* Minimum of a and b. */ #define MIN(a, b) ((a) > (b) ? (b) : (a)) +#endif /* =========================================================================== * Copy without compression as much as possible from the input stream, return Index: contrib/zlib/gzguts.h =================================================================== --- contrib/zlib/gzguts.h +++ contrib/zlib/gzguts.h @@ -1,3 +1,6 @@ +#ifndef GZGUTS_H +#define GZGUTS_H + /* gzguts.h -- zlib internal header definitions for gz* operations * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h @@ -216,3 +219,5 @@ unsigned ZLIB_INTERNAL gz_intmax OF((void)); # define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax()) #endif + +#endif Index: contrib/zlib/inffast.h =================================================================== --- contrib/zlib/inffast.h +++ contrib/zlib/inffast.h @@ -1,3 +1,6 @@ +#ifndef INFFAST_H +#define INFFAST_H + /* inffast.h -- header to use inffast.c * Copyright (C) 1995-2003, 2010 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h @@ -9,3 +12,5 @@ */ void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start)); + +#endif Index: contrib/zlib/inffixed.h =================================================================== --- contrib/zlib/inffixed.h +++ contrib/zlib/inffixed.h @@ -1,3 +1,6 @@ +#ifndef INFFIXED_H +#define INFFIXED_H + /* inffixed.h -- table for decoding fixed codes * Generated automatically by makefixed(). */ @@ -92,3 +95,5 @@ {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073}, {22,5,193},{64,5,0} }; + +#endif Index: contrib/zlib/inflate.h =================================================================== --- contrib/zlib/inflate.h +++ contrib/zlib/inflate.h @@ -1,3 +1,6 @@ +#ifndef INFLATE_H +#define INFLATE_H + /* inflate.h -- internal inflate state definition * Copyright (C) 1995-2016 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h @@ -123,3 +126,5 @@ int back; /* bits back of last unprocessed length/lit */ unsigned was; /* initial length of match */ }; + +#endif Index: contrib/zlib/inftrees.h =================================================================== --- contrib/zlib/inftrees.h +++ contrib/zlib/inftrees.h @@ -1,3 +1,6 @@ +#ifndef INFTREE_H +#define INFTREE_H + /* inftrees.h -- header to use inftrees.c * Copyright (C) 1995-2005, 2010 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h @@ -60,3 +63,5 @@ int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens, unsigned codes, code FAR * FAR *table, unsigned FAR *bits, unsigned short FAR *work)); + +#endif Index: contrib/zlib/trees.h =================================================================== --- contrib/zlib/trees.h +++ contrib/zlib/trees.h @@ -1,3 +1,6 @@ +#ifndef TREES_H +#define TREES_H + /* header created automatically with -DGEN_TREES_H */ local const ct_data static_ltree[L_CODES+2] = { @@ -126,3 +129,4 @@ 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576 }; +#endif Index: sys/conf/files =================================================================== --- sys/conf/files +++ sys/conf/files @@ -2458,7 +2458,8 @@ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "mwlboot.fw" -dev/mxge/if_mxge.c optional mxge pci +dev/mxge/if_mxge.c optional mxge pci \ + compile-with "${ZLIB_C}" 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 @@ -3674,7 +3675,8 @@ geom/uzip/g_uzip.c optional geom_uzip geom/uzip/g_uzip_lzma.c optional geom_uzip geom/uzip/g_uzip_wrkthr.c optional geom_uzip -geom/uzip/g_uzip_zlib.c optional geom_uzip +geom/uzip/g_uzip_zlib.c optional geom_uzip \ + compile-with "${ZLIB_C}" geom/vinum/geom_vinum.c optional geom_vinum geom/vinum/geom_vinum_create.c optional geom_vinum geom/vinum/geom_vinum_drive.c optional geom_vinum @@ -3817,7 +3819,8 @@ kern/kern_umtx.c standard kern/kern_uuid.c standard kern/kern_xxx.c standard -kern/link_elf.c standard +kern/link_elf.c standard \ + compile-with "${ZLIB_C}" kern/linker_if.m standard kern/md4c.c optional netsmb kern/md5c.c standard @@ -3839,7 +3842,7 @@ kern/subr_capability.c standard kern/subr_clock.c standard kern/subr_compressor.c standard \ - compile-with "${NORMAL_C} -I$S/contrib/zstd/lib/freebsd" + compile-with "${ZLIB_C}" kern/subr_coverage.c optional coverage \ compile-with "${NORMAL_C:N-fsanitize*}" kern/subr_counter.c standard @@ -4044,7 +4047,8 @@ libkern/strvalid.c standard libkern/timingsafe_bcmp.c standard libkern/zlib.c optional crypto | geom_uzip | ipsec | \ - ipsec_support | mxge | netgraph_deflate | ddb_ctf | gzio + ipsec_support | mxge | ddb_ctf | gzio \ + compile-with "${ZLIB_C} -Wno-cast-qual" net/altq/altq_cbq.c optional altq net/altq/altq_codel.c optional altq net/altq/altq_hfsc.c optional altq @@ -4199,7 +4203,7 @@ netgraph/ng_car.c optional netgraph_car netgraph/ng_checksum.c optional netgraph_checksum netgraph/ng_cisco.c optional netgraph_cisco -netgraph/ng_deflate.c optional netgraph_deflate +netgraph/ng_deflate.c optional netgraph_deflate # should I delete? netgraph/ng_device.c optional netgraph_device netgraph/ng_echo.c optional netgraph_echo netgraph/ng_eiface.c optional netgraph_eiface @@ -4794,7 +4798,8 @@ 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 +opencrypto/cryptodeflate.c optional crypto | ipsec | ipsec_support \ + compile-with "${ZLIB_C}" opencrypto/gmac.c optional crypto | ipsec | ipsec_support opencrypto/gfmult.c optional crypto | ipsec | ipsec_support opencrypto/rmd160.c optional crypto | ipsec | ipsec_support Index: sys/conf/files.amd64 =================================================================== --- sys/conf/files.amd64 +++ sys/conf/files.amd64 @@ -221,14 +221,22 @@ dev/atkbdc/atkbdc_isa.c optional atkbdc isa dev/atkbdc/atkbdc_subr.c optional atkbdc dev/atkbdc/psm.c optional psm atkbdc -dev/bxe/bxe.c optional bxe pci -dev/bxe/bxe_stats.c optional bxe pci -dev/bxe/bxe_debug.c optional bxe pci -dev/bxe/ecore_sp.c optional bxe pci -dev/bxe/bxe_elink.c optional bxe pci -dev/bxe/57710_init_values.c optional bxe pci -dev/bxe/57711_init_values.c optional bxe pci -dev/bxe/57712_init_values.c optional bxe pci +dev/bxe/bxe.c optional bxe pci \ + compile-with "${ZLIB_C}" +dev/bxe/bxe_stats.c optional bxe pci \ + compile-with "${ZLIB_C}" +dev/bxe/bxe_debug.c optional bxe pci \ + compile-with "${ZLIB_C}" +dev/bxe/ecore_sp.c optional bxe pci \ + compile-with "${ZLIB_C}" +dev/bxe/bxe_elink.c optional bxe pci \ + compile-with "${ZLIB_C}" +dev/bxe/57710_init_values.c optional bxe pci \ + compile-with "${ZLIB_C}" +dev/bxe/57711_init_values.c optional bxe pci \ + compile-with "${ZLIB_C}" +dev/bxe/57712_init_values.c optional bxe pci \ + compile-with "${ZLIB_C}" dev/coretemp/coretemp.c optional coretemp dev/cpuctl/cpuctl.c optional cpuctl dev/dpms/dpms.c optional dpms Index: sys/conf/files.i386 =================================================================== --- sys/conf/files.i386 +++ sys/conf/files.i386 @@ -171,14 +171,22 @@ dev/atkbdc/atkbdc_isa.c optional atkbdc isa dev/atkbdc/atkbdc_subr.c optional atkbdc dev/atkbdc/psm.c optional psm atkbdc -dev/bxe/bxe.c optional bxe pci -dev/bxe/bxe_stats.c optional bxe pci -dev/bxe/bxe_debug.c optional bxe pci -dev/bxe/ecore_sp.c optional bxe pci -dev/bxe/bxe_elink.c optional bxe pci -dev/bxe/57710_init_values.c optional bxe pci -dev/bxe/57711_init_values.c optional bxe pci -dev/bxe/57712_init_values.c optional bxe pci +dev/bxe/bxe.c optional bxe pci \ + compile-with "${ZLIB_C}" +dev/bxe/bxe_stats.c optional bxe pci \ + compile-with "${ZLIB_C}" +dev/bxe/bxe_debug.c optional bxe pci \ + compile-with "${ZLIB_C}" +dev/bxe/ecore_sp.c optional bxe pci \ + compile-with "${ZLIB_C}" +dev/bxe/bxe_elink.c optional bxe pci \ + compile-with "${ZLIB_C}" +dev/bxe/57710_init_values.c optional bxe pci \ + compile-with "${ZLIB_C}" +dev/bxe/57711_init_values.c optional bxe pci \ + compile-with "${ZLIB_C}" +dev/bxe/57712_init_values.c optional bxe pci \ + compile-with "${ZLIB_C}" dev/ce/ceddk.c optional ce dev/ce/if_ce.c optional ce dev/ce/tau32-ddk.c optional ce \ Index: sys/conf/kern.pre.mk =================================================================== --- sys/conf/kern.pre.mk +++ sys/conf/kern.pre.mk @@ -173,6 +173,9 @@ 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 (include zstd/lib/freebsd before other CFLAGS) +ZLIB_C= ${CC} -c -DZSTD_HEAPMODE=1 -I$S/../contrib/zlib -I$S/contrib/zstd/lib/freebsd ${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} Index: sys/dev/bxe/bxe.h =================================================================== --- sys/dev/bxe/bxe.h +++ sys/dev/bxe/bxe.h @@ -53,7 +53,7 @@ #include #include #include -#include +#include /* z_stream */ #include #include Index: sys/dev/iscsi/icl_soft.c =================================================================== --- sys/dev/iscsi/icl_soft.c +++ sys/dev/iscsi/icl_soft.c @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include Index: sys/dev/iscsi_initiator/isc_subr.c =================================================================== --- sys/dev/iscsi_initiator/isc_subr.c +++ sys/dev/iscsi_initiator/isc_subr.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include Index: sys/dev/liquidio/lio_bsd.h =================================================================== --- sys/dev/liquidio/lio_bsd.h +++ sys/dev/liquidio/lio_bsd.h @@ -36,6 +36,7 @@ #define __LIO_BSD_H__ #include +#include #include #include #include Index: sys/dev/mxge/if_mxge.c =================================================================== --- sys/dev/mxge/if_mxge.c +++ sys/dev/mxge/if_mxge.c @@ -725,7 +725,7 @@ bzero(&zs, sizeof (zs)); zs.zalloc = z_alloc; zs.zfree = z_free; - status = inflateInit(&zs); + status = z_inflateInit(&zs); if (status != Z_OK) { status = EIO; goto abort_with_fw; Index: sys/dev/usb/net/if_cdce.c =================================================================== --- sys/dev/usb/net/if_cdce.c +++ sys/dev/usb/net/if_cdce.c @@ -50,6 +50,7 @@ #include __FBSDID("$FreeBSD$"); +#include #include #include #include Index: sys/fs/ext2fs/ext2_csum.c =================================================================== --- sys/fs/ext2fs/ext2_csum.c +++ sys/fs/ext2fs/ext2_csum.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include Index: sys/geom/part/g_part_bsd64.c =================================================================== --- sys/geom/part/g_part_bsd64.c +++ sys/geom/part/g_part_bsd64.c @@ -29,6 +29,7 @@ #include #include +#include #include #include #include Index: sys/geom/part/g_part_gpt.c =================================================================== --- sys/geom/part/g_part_gpt.c +++ sys/geom/part/g_part_gpt.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include Index: sys/geom/raid/md_ddf.c =================================================================== --- sys/geom/raid/md_ddf.c +++ sys/geom/raid/md_ddf.c @@ -31,6 +31,7 @@ #include #include +#include #include #include #include Index: sys/geom/uzip/g_uzip_zlib.c =================================================================== --- sys/geom/uzip/g_uzip_zlib.c +++ sys/geom/uzip/g_uzip_zlib.c @@ -56,7 +56,7 @@ struct g_uzip_zlib *zp; zp = (struct g_uzip_zlib *)zpp->pvt; - inflateEnd(&zp->zs); + z_inflateEnd(&zp->zs); free(zp, M_GEOM_UZIP); } @@ -74,9 +74,9 @@ zp->zs.next_out = obp; zp->zs.avail_out = zp->blksz; - err = (inflate(&zp->zs, Z_FINISH) != Z_STREAM_END) ? 1 : 0; + err = (z_inflate(&zp->zs, Z_FINISH) != Z_STREAM_END) ? 1 : 0; if (err != 0) { - printf("%s: UZIP(zlib) inflate() failed\n", gp_name); + printf("%s: UZIP(zlib) z_inflate() failed\n", gp_name); } return (err); } @@ -90,7 +90,7 @@ zp = (struct g_uzip_zlib *)zpp->pvt; err = 0; - if (inflateReset(&zp->zs) != Z_OK) { + if (z_inflateReset(&zp->zs) != Z_OK) { printf("%s: UZIP(zlib) decoder reset failed\n", gp_name); err = 1; } @@ -98,10 +98,10 @@ } static int -z_compressBound(int len) +uzip_compressBound(int len) { - return (len + (len >> 12) + (len >> 14) + 11); + return (len + (len >> 12) + (len >> 14) + 11); /* why is this different from that of zlib? */ } struct g_uzip_dapi * @@ -112,11 +112,11 @@ zp = malloc(sizeof(struct g_uzip_zlib), M_GEOM_UZIP, M_WAITOK); zp->zs.zalloc = z_alloc; zp->zs.zfree = z_free; - if (inflateInit(&zp->zs) != Z_OK) { + if (z_inflateInit(&zp->zs) != Z_OK) { goto e1; } zp->blksz = blksz; - zp->pub.max_blen = z_compressBound(blksz); + zp->pub.max_blen = uzip_compressBound(blksz); zp->pub.decompress = &g_uzip_zlib_decompress; zp->pub.free = &g_uzip_zlib_free; zp->pub.rewind = &g_uzip_zlib_rewind; Index: sys/kern/kern_ctf.c =================================================================== --- sys/kern/kern_ctf.c +++ sys/kern/kern_ctf.c @@ -40,6 +40,9 @@ #define CTF_HDR_STRLEN_U32 8 #ifdef DDB_CTF + +#include + static void * z_alloc(void *nil, u_int items, u_int size) { @@ -268,7 +271,7 @@ zs.zalloc = z_alloc; zs.zfree = z_free; - if (inflateInit(&zs) != Z_OK) { + if (z_inflateInit(&zs) != Z_OK) { error = EIO; goto out; } @@ -277,10 +280,10 @@ zs.next_in = ((uint8_t *) raw) + sizeof(ctf_hdr); zs.avail_out = sz - sizeof(ctf_hdr); zs.next_out = ((uint8_t *) ctftab) + sizeof(ctf_hdr); - ret = inflate(&zs, Z_FINISH); - inflateEnd(&zs); + ret = z_inflate(&zs, Z_FINISH); + z_inflateEnd(&zs); if (ret != Z_STREAM_END) { - printf("%s(%d): zlib inflate returned %d\n", __func__, __LINE__, ret); + printf("%s(%d): zlib z_inflate returned %d\n", __func__, __LINE__, ret); error = EIO; goto out; } Index: sys/kern/link_elf.c =================================================================== --- sys/kern/link_elf.c +++ sys/kern/link_elf.c @@ -67,10 +67,6 @@ #include -#ifdef DDB_CTF -#include -#endif - #include "linker_if.h" #define MAXSEGS 4 Index: sys/kern/subr_compressor.c =================================================================== --- sys/kern/subr_compressor.c +++ sys/kern/subr_compressor.c @@ -66,7 +66,8 @@ #ifdef GZIO -#include +#include +#include /* z_deflateInit2, etc */ struct gz_stream { uint8_t *gz_buffer; /* output buffer */ @@ -117,8 +118,8 @@ s->gz_stream.next_in = Z_NULL; s->gz_stream.avail_in = 0; - error = deflateInit2(&s->gz_stream, level, Z_DEFLATED, -MAX_WBITS, - DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY); + error = z_deflateInit2(&s->gz_stream, level, Z_DEFLATED, -MAX_WBITS, + 8 /* as DEF_MEM_LEVEL */, Z_DEFAULT_STRATEGY); if (error != 0) goto fail; @@ -142,7 +143,7 @@ s->gz_off = 0; s->gz_crc = ~0U; - (void)deflateReset(&s->gz_stream); + (void)z_deflateReset(&s->gz_stream); s->gz_stream.avail_out = s->gz_bufsz; s->gz_stream.next_out = s->gz_buffer; @@ -152,7 +153,7 @@ hdr[0] = 0x1f; hdr[1] = 0x8b; hdr[2] = Z_DEFLATED; - hdr[9] = OS_CODE; + hdr[9] = 0x03; /* zlib's OS_CODE Unix */ s->gz_stream.next_out += hdrlen; s->gz_stream.avail_out -= hdrlen; } @@ -178,7 +179,7 @@ error = 0; do { - zerror = deflate(&s->gz_stream, zflag); + zerror = z_deflate(&s->gz_stream, zflag); if (zerror != Z_OK && zerror != Z_STREAM_END) { error = EIO; break; @@ -232,7 +233,7 @@ struct gz_stream *s; s = stream; - (void)deflateEnd(&s->gz_stream); + (void)z_deflateEnd(&s->gz_stream); gz_free(NULL, s->gz_buffer); gz_free(NULL, s); } Index: sys/libkern/crc32.c =================================================================== --- sys/libkern/crc32.c +++ sys/libkern/crc32.c @@ -48,7 +48,7 @@ #include #ifdef _KERNEL -#include +#include #include #if defined(__amd64__) || defined(__i386__) Index: sys/libkern/x86/crc32_sse42.c =================================================================== --- sys/libkern/x86/crc32_sse42.c +++ sys/libkern/x86/crc32_sse42.c @@ -34,7 +34,7 @@ #include #else #include -#include +#include #include #endif Index: sys/modules/bxe/Makefile =================================================================== --- sys/modules/bxe/Makefile +++ sys/modules/bxe/Makefile @@ -17,6 +17,7 @@ 57712_init_values.c CFLAGS += -I${BXE} +CFLAGS += -I${SRCTOP}/contrib/zlib -I${SRCTOP}/sys/contrib/zstd/lib/freebsd .include CWARNFLAGS+= ${NO_WUNUSED_BUT_SET_VARIABLE} Index: sys/modules/crypto/Makefile =================================================================== --- sys/modules/crypto/Makefile +++ sys/modules/crypto/Makefile @@ -23,6 +23,7 @@ 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 += -I${SRCTOP}/contrib/zlib -I${SRCTOP}/sys/contrib/zstd/lib/freebsd 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 Index: sys/modules/geom/geom_uzip/Makefile =================================================================== --- sys/modules/geom/geom_uzip/Makefile +++ sys/modules/geom/geom_uzip/Makefile @@ -10,7 +10,8 @@ .PATH: ${SRCTOP}/sys/net -CFLAGS+= -I${SRCTOP}/sys/contrib/xz-embedded/freebsd \ +CFLAGS.g_uzip_zlib.c += -I${SRCTOP}/contrib/zlib -I${SRCTOP}/sys/contrib/zstd/lib/freebsd +CFLAGS.g_uzip_lzma.c+= -I${SRCTOP}/sys/contrib/xz-embedded/freebsd \ -I${SRCTOP}/sys/contrib/xz-embedded/linux/lib/xz/ SRCS+= opt_geom.h Index: sys/modules/mxge/mxge/Makefile =================================================================== --- sys/modules/mxge/mxge/Makefile +++ sys/modules/mxge/mxge/Makefile @@ -5,4 +5,6 @@ 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 += -I${SRCTOP}/contrib/zlib -I${SRCTOP}/sys/contrib/zstd/lib/freebsd + .include Index: sys/modules/zlib/Makefile =================================================================== --- sys/modules/zlib/Makefile +++ sys/modules/zlib/Makefile @@ -5,4 +5,9 @@ KMOD= zlib SRCS= zlib.c +CFLAGS+= -I${SRCTOP}/contrib/zlib +CFLAGS+= -I${SRCTOP}/sys/contrib/zstd/lib/freebsd + +CWARNFLAGS+= -Wno-cast-qual # deflate.c:415 + .include Index: sys/netgraph/ng_deflate.c =================================================================== --- sys/netgraph/ng_deflate.c +++ sys/netgraph/ng_deflate.c @@ -41,7 +41,6 @@ #include #include #include -#include #include #include @@ -53,6 +52,8 @@ static MALLOC_DEFINE(M_NETGRAPH_DEFLATE, "netgraph_deflate", "netgraph deflate node"); +#include "netgraph/zlib.c" + /* DEFLATE header length */ #define DEFLATE_HDRLEN 2 @@ -697,4 +698,3 @@ inflateReset(&priv->cx); } } - Index: sys/netgraph/zlib.c =================================================================== --- sys/netgraph/zlib.c +++ sys/netgraph/zlib.c @@ -54,7 +54,7 @@ #define _Z_UTIL_H #ifdef _KERNEL -#include +#include #else #include "zlib.h" #endif Index: sys/netinet/libalias/alias_sctp.c =================================================================== --- sys/netinet/libalias/alias_sctp.c +++ sys/netinet/libalias/alias_sctp.c @@ -75,6 +75,7 @@ #ifdef _KERNEL #include #include +#include #include #include #include Index: sys/netinet/sctp_crc32.c =================================================================== --- sys/netinet/sctp_crc32.c +++ sys/netinet/sctp_crc32.c @@ -38,11 +38,13 @@ #include "opt_sctp.h" #ifdef SCTP +#include #include #include #include #include #else +#include #include #include #include Index: sys/opencrypto/cryptodeflate.c =================================================================== --- sys/opencrypto/cryptodeflate.c +++ sys/opencrypto/cryptodeflate.c @@ -122,7 +122,7 @@ zbuf.avail_out = bufp->size; error = decomp ? inflateInit2(&zbuf, window_inflate) : - deflateInit2(&zbuf, Z_DEFAULT_COMPRESSION, Z_METHOD, + z_deflateInit2(&zbuf, Z_DEFAULT_COMPRESSION, Z_METHOD, window_deflate, Z_MEMLEVEL, Z_DEFAULT_STRATEGY); if (error != Z_OK) { SDT_PROBE5(opencrypto, deflate, deflate_global, bad, @@ -141,17 +141,17 @@ SDT_PROBE5(opencrypto, deflate, deflate_global, bad, decomp, error, __LINE__, zbuf.avail_in, zbuf.avail_out); - SDT_PROBE5(opencrypto, deflate, deflate_global, bad, + SDT_PROBE4(opencrypto, deflate, deflate_global, bad, decomp, error, __LINE__, - zbuf.state->dummy, zbuf.total_out); + zbuf.total_out); goto bad; } SDT_PROBE5(opencrypto, deflate, deflate_global, iter, decomp, error, __LINE__, zbuf.avail_in, zbuf.avail_out); - SDT_PROBE5(opencrypto, deflate, deflate_global, iter, + SDT_PROBE4(opencrypto, deflate, deflate_global, iter, decomp, error, __LINE__, - zbuf.state->dummy, zbuf.total_out); + zbuf.total_out); if (decomp && zbuf.avail_in == 0 && error == Z_STREAM_END) { /* Done. */ break; @@ -184,9 +184,9 @@ SDT_PROBE5(opencrypto, deflate, deflate_global, bad, decomp, error, __LINE__, zbuf.avail_in, zbuf.avail_out); - SDT_PROBE5(opencrypto, deflate, deflate_global, bad, + SDT_PROBE4(opencrypto, deflate, deflate_global, bad, decomp, error, __LINE__, - zbuf.state->dummy, zbuf.total_out); + zbuf.total_out); goto bad; } } Index: sys/opencrypto/deflate.h =================================================================== --- sys/opencrypto/deflate.h +++ sys/opencrypto/deflate.h @@ -36,8 +36,6 @@ #ifndef _CRYPTO_DEFLATE_H_ #define _CRYPTO_DEFLATE_H_ -#include - #define Z_METHOD 8 #define Z_MEMLEVEL 8 #define MINCOMP 2 /* won't be used, but must be defined */ Index: sys/sys/libkern.h =================================================================== --- sys/sys/libkern.h +++ sys/sys/libkern.h @@ -190,39 +190,6 @@ char *strstr(const char *, const char *); int strvalid(const char *, size_t); -extern const uint32_t crc32_tab[]; - -static __inline uint32_t -crc32_raw(const void *buf, size_t size, uint32_t crc) -{ - const uint8_t *p = (const uint8_t *)buf; - - while (size--) - crc = crc32_tab[(crc ^ *p++) & 0xFF] ^ (crc >> 8); - return (crc); -} - -static __inline uint32_t -crc32(const void *buf, size_t size) -{ - uint32_t crc; - - crc = crc32_raw(buf, size, ~0U); - return (crc ^ ~0U); -} - -uint32_t -calculate_crc32c(uint32_t crc32c, const unsigned char *buffer, - unsigned int length); -#ifdef _KERNEL -#if defined(__amd64__) || defined(__i386__) -uint32_t sse42_crc32c(uint32_t, const unsigned char *, unsigned); -#endif -#if defined(__aarch64__) -uint32_t armv8_crc32c(uint32_t, const unsigned char *, unsigned int); -#endif -#endif - static __inline char * index(const char *p, int ch) { Index: sys/sys/zlib.h =================================================================== --- sys/sys/zlib.h +++ sys/sys/zlib.h @@ -1,1020 +1,40 @@ /* $FreeBSD$ */ -/* - * This file is derived from zlib.h and zconf.h from the zlib-1.0.4 - * distribution by Jean-loup Gailly and Mark Adler, with some additions - * by Paul Mackerras to aid in implementing Deflate compression and - * decompression for PPP packets. - */ +#ifndef SYS_ZLIB_H +#define SYS_ZLIB_H /* - * ==FILEVERSION 971127== - * - * This marker is used by the Linux installation script to determine - * whether an up-to-date version of this file is already installed. - */ - - -/* +++ zlib.h */ -/*- - SPDX-License-Identifier: BSD-3-Clause - - zlib.h -- interface of the 'zlib' general purpose compression library - version 1.0.4, Jul 24th, 1996. - - Copyright (C) 1995-1996 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - gzip@prep.ai.mit.edu madler@alumni.caltech.edu +* #1 - sys/crc32.h is split out of sys/libkern.h to avoid conflicts +* between zlib's crc32 and system crc32. +* #2 - Use contrib/zstd/lib/freebsd's stdlib compatible includes. +* #3 - ZLIB_C is created con/kern.pre.mk to share compile paths. +* -I contrib/zlib +* -I sys/contrib/zstd/lib/freebsd +* #4 - sys/zlib.h defines these. +* Z_PREIFX +* NO_GZIP +* Z_SOLO - this is for libkern/zlib.c and not needed for clients of zlib. +* #5 - opencryptodeflate.c +* zfs.state->dummy is an address and doesn't seem to be useful. +* Its DTRACE probe is removed. +* #6 - netgraph/deflate.c needs and uses FreeBSD enhancements to zlib. +* Moved sys/zlib.h to netgraph/zlib.h, sys/libkern/zlib.c to +* netgraph/zlib.c, and netgraph/deflate.c includes netgraph/zlib.c +* to compile as a part of deflate.c. +* We may consider dropping functions with the same implementation +* as contrib/zlib from netgraph/zlib.c. However, this efforts +* require exposing static functions to general public. +* +* TODOs +* #1 - Should we move contrib/zlib to sys/contrib/zlib? +* #2 - zfs has its own copy of zlib, too. +* #3 - GZIP APIs are redefined in multiple places as static functions. */ -/* - The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt - (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). -*/ -#ifndef _ZLIB_H -#define _ZLIB_H +#define Z_PREFIX +#define NO_GZIP +#define Z_SOLO +#include /* from contrib/zlib */ +#include /* from contrib/zlib */ -#ifdef __cplusplus -extern "C" { #endif - - -/* +++ zconf.h */ -/* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-1996 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* From: zconf.h,v 1.20 1996/07/02 15:09:28 me Exp $ */ - -#ifndef _ZCONF_H -#define _ZCONF_H - -/* - * 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. - */ -#ifdef Z_PREFIX -# define deflateInit_ z_deflateInit_ -# define deflate z_deflate -# define deflateEnd z_deflateEnd -# define inflateInit_ z_inflateInit_ -# define inflate z_inflate -# define inflateEnd z_inflateEnd -# define deflateInit2_ z_deflateInit2_ -# define deflateSetDictionary z_deflateSetDictionary -# define deflateCopy z_deflateCopy -# define deflateReset z_deflateReset -# define deflateParams z_deflateParams -# define inflateInit2_ z_inflateInit2_ -# define inflateSetDictionary z_inflateSetDictionary -# define inflateSync z_inflateSync -# define inflateReset z_inflateReset -# define compress z_compress -# define uncompress z_uncompress -# define adler32 z_adler32 -#if 0 -# define crc32 z_crc32 -# define get_crc_table z_get_crc_table -#endif - -# define Byte z_Byte -# define uInt z_uInt -# define uLong z_uLong -# define Bytef z_Bytef -# define charf z_charf -# define intf z_intf -# define uIntf z_uIntf -# define uLongf z_uLongf -# define voidpf z_voidpf -# define voidp z_voidp -#endif - -#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) -# define WIN32 -#endif -#if defined(__GNUC__) || defined(WIN32) || defined(__386__) || defined(__i386__) -# ifndef __32BIT__ -# define __32BIT__ -# endif -#endif -#if defined(__MSDOS__) && !defined(MSDOS) -# define MSDOS -#endif - -/* - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more - * than 64k bytes at a time (needed on systems with 16-bit int). - */ -#if defined(MSDOS) && !defined(__32BIT__) -# define MAXSEG_64K -#endif -#ifdef MSDOS -# define UNALIGNED_OK -#endif - -#if (defined(MSDOS) || defined(_WINDOWS) || defined(WIN32)) && !defined(STDC) -# define STDC -#endif -#if (defined(__STDC__) || defined(__cplusplus)) && !defined(STDC) -# define STDC -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const -# endif -#endif - -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__) || defined(applec) ||defined(THINK_C) ||defined(__SC__) -# define NO_DUMMY_DECL -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2 */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - 1 << (windowBits+2) + 1 << (memLevel+9) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus a few kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(__32BIT__) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR __far -# else -# define FAR far -# endif -#endif -#if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__)) -# ifndef __32BIT__ -# define SMALL_MEDIUM -# define FAR __far -# endif -#endif -#ifndef FAR -# define FAR -#endif - -typedef unsigned char Byte; /* 8 bits */ -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#if defined(__BORLANDC__) && defined(SMALL_MEDIUM) - /* Borland C/C++ ignores FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - - -/* Compile with -DZLIB_DLL for Windows DLL support */ -#if (defined(_WINDOWS) || defined(WINDOWS)) && defined(ZLIB_DLL) -# include -# define EXPORT WINAPI -#else -# define EXPORT -#endif - -#endif /* _ZCONF_H */ -/* --- zconf.h */ - -#define ZLIB_VERSION "1.0.4P" - -/* - The 'zlib' compression library provides in-memory compression and - decompression functions, including integrity checks of the uncompressed - data. This version of the library supports only one compression method - (deflation) but other algorithms may be added later and will have the same - stream interface. - - For compression the application must provide the output buffer and - may optionally provide the input buffer for optimization. For decompression, - the application must provide the input buffer and may optionally provide - the output buffer for optimization. - - Compression can be done in a single step if the buffers are large - enough (for example if an input file is mmap'ed), or can be done by - repeated calls of the compression function. In the latter case, the - application must provide more input and/or consume the output - (providing more output space) before each call. - - The library does not install any signal handler. It is recommended to - add at least a handler for SIGSEGV when decompressing; the library checks - the consistency of the input data whenever possible but may go nuts - for some forms of corrupted input. -*/ - -typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); -typedef void (*free_func) OF((voidpf opaque, voidpf address)); - -struct internal_state; - -typedef struct z_stream_s { - Bytef *next_in; /* next input byte */ - uInt avail_in; /* number of bytes available at next_in */ - uLong total_in; /* total nb of input bytes read so far */ - - Bytef *next_out; /* next output byte should be put there */ - uInt avail_out; /* remaining free space at next_out */ - uLong total_out; /* total nb of bytes output so far */ - - const char *msg; /* last error message, NULL if no error */ - struct internal_state FAR *state; /* not visible by applications */ - - alloc_func zalloc; /* used to allocate the internal state */ - free_func zfree; /* used to free the internal state */ - voidpf opaque; /* private data object passed to zalloc and zfree */ - - int data_type; /* best guess about the data type: ascii or binary */ - uLong adler; /* adler32 value of the uncompressed data */ - uLong reserved; /* reserved for future use */ -} z_stream; - -typedef z_stream FAR *z_streamp; - -/* - The application must update next_in and avail_in when avail_in has - dropped to zero. It must update next_out and avail_out when avail_out - has dropped to zero. The application must initialize zalloc, zfree and - opaque before calling the init function. All other fields are set by the - compression library and must not be updated by the application. - - The opaque value provided by the application will be passed as the first - parameter for calls of zalloc and zfree. This can be useful for custom - memory management. The compression library attaches no meaning to the - opaque value. - - zalloc must return Z_NULL if there is not enough memory for the object. - On 16-bit systems, the functions zalloc and zfree must be able to allocate - exactly 65536 bytes, but will not be required to allocate more than this - if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, - pointers returned by zalloc for objects of exactly 65536 bytes *must* - have their offset normalized to zero. The default allocation function - provided by this library ensures this (see zutil.c). To reduce memory - requirements and avoid any allocation of 64K objects, at the expense of - compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h). - - The fields total_in and total_out can be used for statistics or - progress reports. After compression, total_in holds the total size of - the uncompressed data and may be saved for use in the decompressor - (particularly if the decompressor wants to decompress everything in - a single step). -*/ - - /* constants */ - -#define Z_NO_FLUSH 0 -#define Z_PARTIAL_FLUSH 1 -#define Z_PACKET_FLUSH 2 -#define Z_SYNC_FLUSH 3 -#define Z_FULL_FLUSH 4 -#define Z_FINISH 5 -/* Allowed flush values; see deflate() below for details */ - -#define Z_OK 0 -#define Z_STREAM_END 1 -#define Z_NEED_DICT 2 -#define Z_ERRNO (-1) -#define Z_STREAM_ERROR (-2) -#define Z_DATA_ERROR (-3) -#define Z_MEM_ERROR (-4) -#define Z_BUF_ERROR (-5) -#define Z_VERSION_ERROR (-6) -/* Return codes for the compression/decompression functions. Negative - * values are errors, positive values are used for special but normal events. - */ - -#define Z_NO_COMPRESSION 0 -#define Z_BEST_SPEED 1 -#define Z_BEST_COMPRESSION 9 -#define Z_DEFAULT_COMPRESSION (-1) -/* compression levels */ - -#define Z_FILTERED 1 -#define Z_HUFFMAN_ONLY 2 -#define Z_DEFAULT_STRATEGY 0 -/* compression strategy; see deflateInit2() below for details */ - -#define Z_BINARY 0 -#define Z_ASCII 1 -#define Z_UNKNOWN 2 -/* Possible values of the data_type field */ - -#define Z_DEFLATED 8 -/* The deflate compression method (the only one supported in this version) */ - -#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ - -#define zlib_version zlibVersion() -/* for compatibility with versions < 1.0.2 */ - - /* basic functions */ - -extern const char * EXPORT zlibVersion OF((void)); -/* The application can compare zlibVersion and ZLIB_VERSION for consistency. - If the first character differs, the library code actually used is - not compatible with the zlib.h header file used by the application. - This check is automatically made by deflateInit and inflateInit. - */ - -/* -extern int EXPORT deflateInit OF((z_streamp strm, int level)); - - Initializes the internal stream state for compression. The fields - zalloc, zfree and opaque must be initialized before by the caller. - If zalloc and zfree are set to Z_NULL, deflateInit updates them to - use default allocation functions. - - The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: - 1 gives best speed, 9 gives best compression, 0 gives no compression at - all (the input data is simply copied a block at a time). - Z_DEFAULT_COMPRESSION requests a default compromise between speed and - compression (currently equivalent to level 6). - - deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if level is not a valid compression level, - Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible - with the version assumed by the caller (ZLIB_VERSION). - msg is set to null if there is no error message. deflateInit does not - perform any compression: this will be done by deflate(). -*/ - - -extern int EXPORT deflate OF((z_streamp strm, int flush)); -/* - Performs one or both of the following actions: - - - Compress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in and avail_in are updated and - processing will resume at this point for the next call of deflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. This action is forced if the parameter flush is non zero. - Forcing flush frequently degrades the compression ratio, so this parameter - should be set only when necessary (in interactive applications). - Some output may be provided even if flush is not set. - - Before the call of deflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming - more output, and updating avail_in or avail_out accordingly; avail_out - should never be zero before the call. The application can consume the - compressed output when it wants, for example when the output buffer is full - (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK - and with zero avail_out, it must be called again after making room in the - output buffer because there might be more output pending. - - If the parameter flush is set to Z_PARTIAL_FLUSH, the current compression - block is terminated and flushed to the output buffer so that the - decompressor can get all input data available so far. For method 9, a future - variant on method 8, the current block will be flushed but not terminated. - Z_SYNC_FLUSH has the same effect as partial flush except that the compressed - output is byte aligned (the compressor can clear its internal bit buffer) - and the current block is always terminated; this can be useful if the - compressor has to be restarted from scratch after an interruption (in which - case the internal state of the compressor may be lost). - If flush is set to Z_FULL_FLUSH, the compression block is terminated, a - special marker is output and the compression dictionary is discarded; this - is useful to allow the decompressor to synchronize if one compressed block - has been damaged (see inflateSync below). Flushing degrades compression and - so should be used only when necessary. Using Z_FULL_FLUSH too often can - seriously degrade the compression. If deflate returns with avail_out == 0, - this function must be called again with the same value of the flush - parameter and more output space (updated avail_out), until the flush is - complete (deflate returns with non-zero avail_out). - - If the parameter flush is set to Z_PACKET_FLUSH, the compression - block is terminated, and a zero-length stored block is output, - omitting the length bytes (the effect of this is that the 3-bit type - code 000 for a stored block is output, and the output is then - byte-aligned). This is designed for use at the end of a PPP packet. - - If the parameter flush is set to Z_FINISH, pending input is processed, - pending output is flushed and deflate returns with Z_STREAM_END if there - was enough output space; if deflate returns with Z_OK, this function must be - called again with Z_FINISH and more output space (updated avail_out) but no - more input data, until it returns with Z_STREAM_END or an error. After - deflate has returned Z_STREAM_END, the only possible operations on the - stream are deflateReset or deflateEnd. - - Z_FINISH can be used immediately after deflateInit if all the compression - is to be done in a single step. In this case, avail_out must be at least - 0.1% larger than avail_in plus 12 bytes. If deflate does not return - Z_STREAM_END, then it must be called again as described above. - - deflate() may update data_type if it can make a good guess about - the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered - binary. This field is only for information purposes and does not affect - the compression algorithm in any manner. - - deflate() returns Z_OK if some progress has been made (more input - processed or more output produced), Z_STREAM_END if all input has been - consumed and all output has been produced (only when flush is set to - Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example - if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible. -*/ - - -extern int EXPORT deflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any - pending output. - - deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the - stream state was inconsistent, Z_DATA_ERROR if the stream was freed - prematurely (some input or output was discarded). In the error case, - msg may be set but then points to a static string (which must not be - deallocated). -*/ - - -/* -extern int EXPORT inflateInit OF((z_streamp strm)); - - Initializes the internal stream state for decompression. The fields - zalloc, zfree and opaque must be initialized before by the caller. If - zalloc and zfree are set to Z_NULL, inflateInit updates them to use default - allocation functions. - - inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_VERSION_ERROR if the zlib library version is incompatible - with the version assumed by the caller. msg is set to null if there is no - error message. inflateInit does not perform any decompression: this will be - done by inflate(). -*/ - -#if defined(__FreeBSD__) && defined(_KERNEL) -#define inflate _zlib104_inflate /* FreeBSD already has an inflate :-( */ -#endif - -extern int EXPORT inflate OF((z_streamp strm, int flush)); -/* - Performs one or both of the following actions: - - - Decompress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in is updated and processing - will resume at this point for the next call of inflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. inflate() provides as much output as possible, until there - is no more input data or no more space in the output buffer (see below - about the flush parameter). - - Before the call of inflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming - more output, and updating the next_* and avail_* values accordingly. - The application can consume the uncompressed output when it wants, for - example when the output buffer is full (avail_out == 0), or after each - call of inflate(). If inflate returns Z_OK and with zero avail_out, it - must be called again after making room in the output buffer because there - might be more output pending. - - If the parameter flush is set to Z_PARTIAL_FLUSH or Z_PACKET_FLUSH, - inflate flushes as much output as possible to the output buffer. The - flushing behavior of inflate is not specified for values of the flush - parameter other than Z_PARTIAL_FLUSH, Z_PACKET_FLUSH or Z_FINISH, but the - current implementation actually flushes as much output as possible - anyway. For Z_PACKET_FLUSH, inflate checks that once all the input data - has been consumed, it is expecting to see the length field of a stored - block; if not, it returns Z_DATA_ERROR. - - inflate() should normally be called until it returns Z_STREAM_END or an - error. However if all decompression is to be performed in a single step - (a single call of inflate), the parameter flush should be set to - Z_FINISH. In this case all pending input is processed and all pending - output is flushed; avail_out must be large enough to hold all the - uncompressed data. (The size of the uncompressed data may have been saved - by the compressor for this purpose.) The next operation on this stream must - be inflateEnd to deallocate the decompression state. The use of Z_FINISH - is never required, but can be used to inform inflate that a faster routine - may be used for the single inflate() call. - - inflate() returns Z_OK if some progress has been made (more input - processed or more output produced), Z_STREAM_END if the end of the - compressed data has been reached and all uncompressed output has been - produced, Z_NEED_DICT if a preset dictionary is needed at this point (see - inflateSetDictionary below), Z_DATA_ERROR if the input data was corrupted, - Z_STREAM_ERROR if the stream structure was inconsistent (for example if - next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory, - Z_BUF_ERROR if no progress is possible or if there was not enough room in - the output buffer when Z_FINISH is used. In the Z_DATA_ERROR case, the - application may then call inflateSync to look for a good compression block. - In the Z_NEED_DICT case, strm->adler is set to the Adler32 value of the - dictionary chosen by the compressor. -*/ - - -extern int EXPORT inflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any - pending output. - - inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state - was inconsistent. In the error case, msg may be set but then points to a - static string (which must not be deallocated). -*/ - - /* Advanced functions */ - -/* - The following functions are needed only in some special applications. -*/ - -/* -extern int EXPORT deflateInit2 OF((z_streamp strm, - int level, - int method, - int windowBits, - int memLevel, - int strategy)); - - This is another version of deflateInit with more compression options. The - fields next_in, zalloc, zfree and opaque must be initialized before by - the caller. - - The method parameter is the compression method. It must be Z_DEFLATED in - this version of the library. (Method 9 will allow a 64K history buffer and - partial block flushes.) - - The windowBits parameter is the base two logarithm of the window size - (the size of the history buffer). It should be in the range 8..15 for this - version of the library (the value 16 will be allowed for method 9). Larger - values of this parameter result in better compression at the expense of - memory usage. The default value is 15 if deflateInit is used instead. - - The memLevel parameter specifies how much memory should be allocated - for the internal compression state. memLevel=1 uses minimum memory but - is slow and reduces compression ratio; memLevel=9 uses maximum memory - for optimal speed. The default value is 8. See zconf.h for total memory - usage as a function of windowBits and memLevel. - - The strategy parameter is used to tune the compression algorithm. Use the - value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no - string match). Filtered data consists mostly of small values with a - somewhat random distribution. In this case, the compression algorithm is - tuned to compress them better. The effect of Z_FILTERED is to force more - Huffman coding and less string matching; it is somewhat intermediate - between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects - the compression ratio but not the correctness of the compressed output even - if it is not set appropriately. - - If next_in is not null, the library will use this buffer to hold also - some history information; the buffer must either hold the entire input - data, or have at least 1<<(windowBits+1) bytes and be writable. If next_in - is null, the library will allocate its own history buffer (and leave next_in - null). next_out need not be provided here but must be provided by the - application for the next call of deflate(). - - If the history buffer is provided by the application, next_in must - must never be changed by the application since the compressor maintains - information inside this buffer from call to call; the application - must provide more input only by increasing avail_in. next_in is always - reset by the library in this case. - - deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was - not enough memory, Z_STREAM_ERROR if a parameter is invalid (such as - an invalid method). msg is set to null if there is no error message. - deflateInit2 does not perform any compression: this will be done by - deflate(). -*/ - -extern int EXPORT deflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the compression dictionary (history buffer) from the given - byte sequence without producing any compressed output. This function must - be called immediately after deflateInit or deflateInit2, before any call - of deflate. The compressor and decompressor must use exactly the same - dictionary (see inflateSetDictionary). - The dictionary should consist of strings (byte sequences) that are likely - to be encountered later in the data to be compressed, with the most commonly - used strings preferably put towards the end of the dictionary. Using a - dictionary is most useful when the data to be compressed is short and - can be predicted with good accuracy; the data can then be compressed better - than with the default empty dictionary. In this version of the library, - only the last 32K bytes of the dictionary are used. - Upon return of this function, strm->adler is set to the Adler32 value - of the dictionary; the decompressor may later use this value to determine - which dictionary has been used by the compressor. (The Adler32 value - applies to the whole dictionary even if only a subset of the dictionary is - actually used by the compressor.) - - deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a - parameter is invalid (such as NULL dictionary) or the stream state - is inconsistent (for example if deflate has already been called for this - stream). deflateSetDictionary does not perform any compression: this will - be done by deflate(). -*/ - -extern int EXPORT deflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. If - the source stream is using an application-supplied history buffer, a new - buffer is allocated for the destination stream. The compressed output - buffer is always application-supplied. It's the responsibility of the - application to provide the correct values of next_out and avail_out for the - next call of deflate. - - This function can be useful when several compression strategies will be - tried, for example when there are several ways of pre-processing the input - data with a filter. The streams that will be discarded should then be freed - by calling deflateEnd. Note that deflateCopy duplicates the internal - compression state which can be quite large, so this strategy is slow and - can consume lots of memory. - - deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being NULL). msg is left unchanged in both source and - destination. -*/ - -extern int EXPORT deflateReset OF((z_streamp strm)); -/* - This function is equivalent to deflateEnd followed by deflateInit, - but does not free and reallocate all the internal compression state. - The stream will keep the same compression level and any other attributes - that may have been set by deflateInit2. - - deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being NULL). -*/ - -extern int EXPORT deflateParams OF((z_streamp strm, int level, int strategy)); -/* - Dynamically update the compression level and compression strategy. - This can be used to switch between compression and straight copy of - the input data, or to switch to a different kind of input data requiring - a different strategy. If the compression level is changed, the input - available so far is compressed with the old level (and may be flushed); - the new level will take effect only at the next call of deflate(). - - Before the call of deflateParams, the stream state must be set as for - a call of deflate(), since the currently available input may have to - be compressed and flushed. In particular, strm->avail_out must be non-zero. - - deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source - stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR - if strm->avail_out was zero. -*/ - -extern int EXPORT deflateOutputPending OF((z_streamp strm)); -/* - Returns the number of bytes of output which are immediately - available from the compressor (i.e. without any further input - or flush). -*/ - -/* -extern int EXPORT inflateInit2 OF((z_streamp strm, - int windowBits)); - - This is another version of inflateInit with more compression options. The - fields next_out, zalloc, zfree and opaque must be initialized before by - the caller. - - The windowBits parameter is the base two logarithm of the maximum window - size (the size of the history buffer). It should be in the range 8..15 for - this version of the library (the value 16 will be allowed soon). The - default value is 15 if inflateInit is used instead. If a compressed stream - with a larger window size is given as input, inflate() will return with - the error code Z_DATA_ERROR instead of trying to allocate a larger window. - - If next_out is not null, the library will use this buffer for the history - buffer; the buffer must either be large enough to hold the entire output - data, or have at least 1< #include +#include #include #include #include Index: sys/ufs/ffs/ffs_snapshot.c =================================================================== --- sys/ufs/ffs/ffs_snapshot.c +++ sys/ufs/ffs/ffs_snapshot.c @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include Index: sys/ufs/ffs/ffs_subr.c =================================================================== --- sys/ufs/ffs/ffs_subr.c +++ sys/ufs/ffs/ffs_subr.c @@ -59,6 +59,7 @@ #else /* _KERNEL */ #include +#include #include #include #include Index: sys/ufs/ffs/ffs_vfsops.c =================================================================== --- sys/ufs/ffs/ffs_vfsops.c +++ sys/ufs/ffs/ffs_vfsops.c @@ -40,6 +40,7 @@ #include "opt_ddb.h" #include +#include #include #include #include