Index: contrib/zstd/lib/common/error_private.h =================================================================== --- contrib/zstd/lib/common/error_private.h +++ contrib/zstd/lib/common/error_private.h @@ -20,7 +20,11 @@ /* **************************************** * Dependencies ******************************************/ +#ifdef _KERNEL +#include /* size_t */ +#else #include /* size_t */ +#endif #include "zstd_errors.h" /* enum list */ Index: contrib/zstd/lib/common/fse.h =================================================================== --- contrib/zstd/lib/common/fse.h +++ contrib/zstd/lib/common/fse.h @@ -43,7 +43,11 @@ /*-***************************************** * Dependencies ******************************************/ +#ifdef _KERNEL +#include /* size_t, ptrdiff_t */ +#else #include /* size_t, ptrdiff_t */ +#endif /*-***************************************** Index: contrib/zstd/lib/common/fse_decompress.c =================================================================== --- contrib/zstd/lib/common/fse_decompress.c +++ contrib/zstd/lib/common/fse_decompress.c @@ -36,8 +36,17 @@ /* ************************************************************** * Includes ****************************************************************/ +#ifdef _KERNEL +#include "zstd_kmalloc.h" /* malloc, free */ +#include /* memcpy, memset */ +#else +#ifdef _BOOTSTRAP +#include +#else #include /* malloc, free, qsort */ #include /* memcpy, memset */ +#endif +#endif #include "bitstream.h" #include "compiler.h" #define FSE_STATIC_LINKING_ONLY @@ -82,12 +91,20 @@ FSE_DTable* FSE_createDTable (unsigned tableLog) { if (tableLog > FSE_TABLELOG_ABSOLUTE_MAX) tableLog = FSE_TABLELOG_ABSOLUTE_MAX; +#ifdef _KERNEL + return (FSE_DTable*)malloc( FSE_DTABLE_SIZE_U32(tableLog) * sizeof (U32), M_ZSTD, M_NOWAIT); +#else return (FSE_DTable*)malloc( FSE_DTABLE_SIZE_U32(tableLog) * sizeof (U32) ); +#endif } void FSE_freeDTable (FSE_DTable* dt) { +#ifdef _KERNEL + free(dt, M_ZSTD); +#else free(dt); +#endif } size_t FSE_buildDTable(FSE_DTable* dt, const short* normalizedCounter, unsigned maxSymbolValue, unsigned tableLog) Index: contrib/zstd/lib/common/huf.h =================================================================== --- contrib/zstd/lib/common/huf.h +++ contrib/zstd/lib/common/huf.h @@ -40,7 +40,11 @@ #define HUF_H_298734234 /* *** Dependencies *** */ +#ifdef _KERNEL +#include /* size_t */ +#else #include /* size_t */ +#endif /* *** library symbols visibility *** */ Index: contrib/zstd/lib/common/mem.h =================================================================== --- contrib/zstd/lib/common/mem.h +++ contrib/zstd/lib/common/mem.h @@ -17,8 +17,13 @@ /*-**************************************** * Dependencies ******************************************/ +#ifdef _KERNEL +#include /* size_t, ptrdiff_t */ +#include /* memcpy */ +#else #include /* size_t, ptrdiff_t */ #include /* memcpy */ +#endif /*-**************************************** @@ -47,7 +52,9 @@ * Basic Types *****************************************************************/ #if !defined (__VMS) && (defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) +#ifndef _KERNEL # include +#endif typedef uint8_t BYTE; typedef uint16_t U16; typedef int16_t S16; Index: contrib/zstd/lib/common/pool.h =================================================================== --- contrib/zstd/lib/common/pool.h +++ contrib/zstd/lib/common/pool.h @@ -15,7 +15,11 @@ #endif +#ifdef _KERNEL +#include /* size_t */ +#else #include /* size_t */ +#endif typedef struct POOL_ctx_s POOL_ctx; Index: contrib/zstd/lib/common/pool.c =================================================================== --- contrib/zstd/lib/common/pool.c +++ contrib/zstd/lib/common/pool.c @@ -9,8 +9,13 @@ /* ====== Dependencies ======= */ +#ifdef _KERNEL +#include /* size_t */ +#include "zstd_kmalloc.h" /* malloc, calloc, free */ +#else #include /* size_t */ #include /* malloc, calloc, free */ +#endif #include "pool.h" /* ====== Compiler specifics ====== */ @@ -109,7 +114,11 @@ * and full queues. */ ctx->queueSize = queueSize + 1; +#ifdef _KERNEL + ctx->queue = (POOL_job*) malloc(ctx->queueSize * sizeof(POOL_job), M_ZSTD, M_NOWAIT); +#else ctx->queue = (POOL_job*) malloc(ctx->queueSize * sizeof(POOL_job)); +#endif ctx->queueHead = 0; ctx->queueTail = 0; ctx->numThreadsBusy = 0; @@ -119,7 +128,11 @@ (void)pthread_cond_init(&ctx->queuePopCond, NULL); ctx->shutdown = 0; /* Allocate space for the thread handles */ +#ifdef _KERNEL + ctx->threads = (pthread_t*)malloc(numThreads * sizeof(pthread_t), M_ZSTD, M_NOWAIT); +#else ctx->threads = (pthread_t*)malloc(numThreads * sizeof(pthread_t)); +#endif ctx->numThreads = 0; /* Check for errors */ if (!ctx->threads || !ctx->queue) { POOL_free(ctx); return NULL; } @@ -220,11 +233,19 @@ POOL_ctx* POOL_create(size_t numThreads, size_t queueSize) { (void)numThreads; (void)queueSize; +#ifdef _KERNEL + return (POOL_ctx*)malloc(sizeof(POOL_ctx), M_ZSTD, M_NOWAIT); +#else return (POOL_ctx*)malloc(sizeof(POOL_ctx)); +#endif } void POOL_free(POOL_ctx* ctx) { +#ifdef _KERNEL + free(ctx, M_ZSTD); +#else free(ctx); +#endif } void POOL_add(void* ctx, POOL_function function, void* opaque) { Index: contrib/zstd/lib/common/xxhash.h =================================================================== --- contrib/zstd/lib/common/xxhash.h +++ contrib/zstd/lib/common/xxhash.h @@ -75,7 +75,11 @@ /* **************************** * Definitions ******************************/ +#ifdef _KERNEL +#include /* size_t */ +#else #include /* size_t */ +#endif typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode; Index: contrib/zstd/lib/common/xxhash.c =================================================================== --- contrib/zstd/lib/common/xxhash.c +++ contrib/zstd/lib/common/xxhash.c @@ -97,11 +97,24 @@ ***************************************/ /* Modify the local functions below should you wish to use some other memory routines */ /* for malloc(), free() */ +#ifdef _KERNEL +#include "zstd_kmalloc.h" +#include +static void* XXH_malloc(size_t s) { return malloc(s, M_ZSTD, M_NOWAIT); } +static void XXH_free (void* p) { free(p, M_ZSTD); } +/* for memcpy() */ +#include +#else +#ifdef _BOOTSTRAP +#include +#else #include -static void* XXH_malloc(size_t s) { return malloc(s); } -static void XXH_free (void* p) { free(p); } /* for memcpy() */ #include +#endif /* _BOOTSTRAP */ +static void* XXH_malloc(size_t s) { return malloc(s); } +static void XXH_free (void* p) { free(p); } +#endif /* _KERNEL */ static void* XXH_memcpy(void* dest, const void* src, size_t size) { return memcpy(dest,src,size); } #ifndef XXH_STATIC_LINKING_ONLY @@ -141,7 +154,9 @@ #ifndef MEM_MODULE # define MEM_MODULE # if !defined (__VMS) && (defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) +#ifndef _KERNEL # include +#endif typedef uint8_t BYTE; typedef uint16_t U16; typedef uint32_t U32; Index: contrib/zstd/lib/common/zstd_common.c =================================================================== --- contrib/zstd/lib/common/zstd_common.c +++ contrib/zstd/lib/common/zstd_common.c @@ -12,8 +12,17 @@ /*-************************************* * Dependencies ***************************************/ +#ifdef _KERNEL +#include "zstd_kmalloc.h" /* malloc, calloc, free */ +#include /* memset */ +#else +#ifdef _BOOTSTRAP +#include +#else #include /* malloc, calloc, free */ #include /* memset */ +#endif +#endif #include "error_private.h" #define ZSTD_STATIC_LINKING_ONLY #include "zstd.h" @@ -54,7 +63,11 @@ { if (customMem.customAlloc) return customMem.customAlloc(customMem.opaque, size); +#ifdef _KERNEL + return malloc(size, M_ZSTD, M_NOWAIT); +#else return malloc(size); +#endif } void* ZSTD_calloc(size_t size, ZSTD_customMem customMem) @@ -66,7 +79,11 @@ memset(ptr, 0, size); return ptr; } +#ifdef _KERNEL + return malloc(size, M_ZSTD, M_NOWAIT | M_ZERO); +#else return calloc(1, size); +#endif } void ZSTD_free(void* ptr, ZSTD_customMem customMem) @@ -75,6 +92,10 @@ if (customMem.customFree) customMem.customFree(customMem.opaque, ptr); else +#ifdef _KERNEL + free(ptr, M_ZSTD); +#else free(ptr); +#endif } } Index: contrib/zstd/lib/common/zstd_errors.h =================================================================== --- contrib/zstd/lib/common/zstd_errors.h +++ contrib/zstd/lib/common/zstd_errors.h @@ -15,7 +15,11 @@ #endif /*===== dependency =====*/ +#ifdef _KERNEL +#include /* size_t */ +#else #include /* size_t */ +#endif /* ===== ZSTDERRORLIB_API : control library symbols visibility ===== */ Index: contrib/zstd/lib/common/zstd_kmalloc.h =================================================================== --- /dev/null +++ contrib/zstd/lib/common/zstd_kmalloc.h @@ -0,0 +1,45 @@ +/*- + * Copyright (c) 2014-2015 Allan Jude + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef ZSTD_KMALLOC_H +#define ZSTD_KMALLOC_H + +#if defined (__cplusplus) +extern "C" { +#endif + +#ifdef _KERNEL +#include +MALLOC_DECLARE(M_ZSTD); +#endif + +#if defined (__cplusplus) +} +#endif + +#endif /* ZSTD_KMALLOC_H */ Index: contrib/zstd/lib/common/zstd_kmalloc.c =================================================================== --- /dev/null +++ contrib/zstd/lib/common/zstd_kmalloc.c @@ -0,0 +1,33 @@ +/*- + * Copyright (c) 2016-2017 Allan Jude + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#include +#include +#include + +MALLOC_DEFINE(M_ZSTD, "zstd", "Zstd temporary allocations"); Index: contrib/zstd/lib/compress/fse_compress.c =================================================================== --- contrib/zstd/lib/compress/fse_compress.c +++ contrib/zstd/lib/compress/fse_compress.c @@ -35,9 +35,14 @@ /* ************************************************************** * Includes ****************************************************************/ +#ifdef _KERNEL +#include "zstd_kmalloc.h" /* malloc, free */ +#include /* memcpy, memset */ +#else #include /* malloc, free, qsort */ #include /* memcpy, memset */ #include /* printf (debug) */ +#endif #include "bitstream.h" #include "compiler.h" #define FSE_STATIC_LINKING_ONLY @@ -450,10 +455,20 @@ size_t size; if (tableLog > FSE_TABLELOG_ABSOLUTE_MAX) tableLog = FSE_TABLELOG_ABSOLUTE_MAX; size = FSE_CTABLE_SIZE_U32 (tableLog, maxSymbolValue) * sizeof(U32); +#ifdef _KERNEL + return (FSE_CTable*)malloc(size, M_ZSTD, M_NOWAIT); +#else return (FSE_CTable*)malloc(size); +#endif } -void FSE_freeCTable (FSE_CTable* ct) { free(ct); } +void FSE_freeCTable (FSE_CTable* ct) { +#ifdef _KERNEL + free(ct, M_ZSTD); +#else + free(ct); +#endif +} /* provides the minimum logSize to safely represent a distribution */ static unsigned FSE_minTableLog(size_t srcSize, unsigned maxSymbolValue) Index: contrib/zstd/lib/compress/huf_compress.c =================================================================== --- contrib/zstd/lib/compress/huf_compress.c +++ contrib/zstd/lib/compress/huf_compress.c @@ -43,8 +43,12 @@ /* ************************************************************** * Includes ****************************************************************/ +#ifdef _KERNEL +#include /* memcpy, memset */ +#else #include /* memcpy, memset */ #include /* printf (debug) */ +#endif #include "bitstream.h" #define FSE_STATIC_LINKING_ONLY /* FSE_optimalTableLog_internal */ #include "fse.h" /* header compression */ Index: contrib/zstd/lib/compress/zstd_compress.c =================================================================== --- contrib/zstd/lib/compress/zstd_compress.c +++ contrib/zstd/lib/compress/zstd_compress.c @@ -19,7 +19,11 @@ /*-************************************* * Dependencies ***************************************/ +#ifdef _KERNEL +#include /* memset */ +#else #include /* memset */ +#endif #include "mem.h" #define FSE_STATIC_LINKING_ONLY /* FSE_encodeSymbol */ #include "fse.h" Index: contrib/zstd/lib/compress/zstdmt_compress.h =================================================================== --- contrib/zstd/lib/compress/zstdmt_compress.h +++ contrib/zstd/lib/compress/zstdmt_compress.h @@ -22,7 +22,11 @@ * These methods will stop being exposed in a future version */ /* === Dependencies === */ +#ifdef _KERNEL +#include /* size_t */ +#else #include /* size_t */ +#endif #define ZSTD_STATIC_LINKING_ONLY /* ZSTD_parameters */ #include "zstd.h" /* ZSTD_inBuffer, ZSTD_outBuffer, ZSTDLIB_API */ Index: contrib/zstd/lib/compress/zstdmt_compress.c =================================================================== --- contrib/zstd/lib/compress/zstdmt_compress.c +++ contrib/zstd/lib/compress/zstdmt_compress.c @@ -20,7 +20,11 @@ /* ====== Dependencies ====== */ +#ifdef _KERNEL +#include /* memcpy, memset */ +#else #include /* memcpy, memset */ +#endif #include "pool.h" /* threadpool */ #include "threading.h" /* mutex */ #include "zstd_internal.h" /* MIN, ERROR, ZSTD_*, ZSTD_highbit32 */ Index: contrib/zstd/lib/decompress/huf_decompress.c =================================================================== --- contrib/zstd/lib/decompress/huf_decompress.c +++ contrib/zstd/lib/decompress/huf_decompress.c @@ -35,7 +35,11 @@ /* ************************************************************** * Dependencies ****************************************************************/ +#ifdef _KERNEL +#include /* memcpy, memset */ +#else #include /* memcpy, memset */ +#endif #include "bitstream.h" /* BIT_* */ #include "compiler.h" #include "fse.h" /* header compression */ Index: contrib/zstd/lib/decompress/zstd_decompress.c =================================================================== --- contrib/zstd/lib/decompress/zstd_decompress.c +++ contrib/zstd/lib/decompress/zstd_decompress.c @@ -41,7 +41,11 @@ /*-******************************************************* * Dependencies *********************************************************/ +#ifdef _KERNEL +#include /* memcpy, memmove, memset */ +#else #include /* memcpy, memmove, memset */ +#endif #include "mem.h" /* low level memory routines */ #define FSE_STATIC_LINKING_ONLY #include "fse.h" Index: contrib/zstd/lib/zstd.h =================================================================== --- contrib/zstd/lib/zstd.h +++ contrib/zstd/lib/zstd.h @@ -14,7 +14,15 @@ #define ZSTD_H_235446 /* ====== Dependency ======*/ +#ifdef _KERNEL +#include /* size_t */ +#else +#ifdef _BOOTSTRAP +#include +#else #include /* size_t */ +#endif +#endif /* ===== ZSTDLIB_API : control library symbols visibility ===== */