mirror of
https://github.com/facebook/zstd.git
synced 2025-12-12 00:05:03 -05:00
Merge pull request #1575 from terrelln/zstdmt
[libzstd] Remove ZSTDMT from the shared library
This commit is contained in:
commit
1a90133b15
@ -56,6 +56,7 @@ ZSTD_FORCE_DECOMPRESS_SHORT ?= 0
|
|||||||
ZSTD_FORCE_DECOMPRESS_LONG ?= 0
|
ZSTD_FORCE_DECOMPRESS_LONG ?= 0
|
||||||
ZSTD_NO_INLINE ?= 0
|
ZSTD_NO_INLINE ?= 0
|
||||||
ZSTD_STRIP_ERROR_STRINGS ?= 0
|
ZSTD_STRIP_ERROR_STRINGS ?= 0
|
||||||
|
ZSTD_LEGACY_MULTITHREADED_API ?= 0
|
||||||
|
|
||||||
ifeq ($(ZSTD_LIB_COMPRESSION), 0)
|
ifeq ($(ZSTD_LIB_COMPRESSION), 0)
|
||||||
ZSTD_LIB_DICTBUILDER = 0
|
ZSTD_LIB_DICTBUILDER = 0
|
||||||
@ -107,6 +108,10 @@ ifneq ($(ZSTD_STRIP_ERROR_STRINGS), 0)
|
|||||||
CFLAGS += -DZSTD_STRIP_ERROR_STRINGS
|
CFLAGS += -DZSTD_STRIP_ERROR_STRINGS
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq ($(ZSTD_LEGACY_MULTITHREADED_API), 0)
|
||||||
|
CFLAGS += -DZSTD_LEGACY_MULTITHREADED_API
|
||||||
|
endif
|
||||||
|
|
||||||
ifneq ($(ZSTD_LEGACY_SUPPORT), 0)
|
ifneq ($(ZSTD_LEGACY_SUPPORT), 0)
|
||||||
ifeq ($(shell test $(ZSTD_LEGACY_SUPPORT) -lt 8; echo $$?), 0)
|
ifeq ($(shell test $(ZSTD_LEGACY_SUPPORT) -lt 8; echo $$?), 0)
|
||||||
ZSTD_FILES += $(shell ls legacy/*.c | $(GREP) 'v0[$(ZSTD_LEGACY_SUPPORT)-7]')
|
ZSTD_FILES += $(shell ls legacy/*.c | $(GREP) 'v0[$(ZSTD_LEGACY_SUPPORT)-7]')
|
||||||
|
|||||||
@ -31,8 +31,6 @@ note that it's necessary to request the `-pthread` flag during link stage.
|
|||||||
|
|
||||||
Multithreading capabilities are exposed
|
Multithreading capabilities are exposed
|
||||||
via the [advanced API defined in `lib/zstd.h`](https://github.com/facebook/zstd/blob/v1.3.8/lib/zstd.h#L592).
|
via the [advanced API defined in `lib/zstd.h`](https://github.com/facebook/zstd/blob/v1.3.8/lib/zstd.h#L592).
|
||||||
This API is still labelled experimental,
|
|
||||||
but is expected to become "stable" in the near future.
|
|
||||||
|
|
||||||
|
|
||||||
#### API
|
#### API
|
||||||
@ -110,6 +108,10 @@ The file structure is designed to make this selection manually achievable for an
|
|||||||
which removes the error messages that are otherwise returned by
|
which removes the error messages that are otherwise returned by
|
||||||
`ZSTD_getErrorName`.
|
`ZSTD_getErrorName`.
|
||||||
|
|
||||||
|
- While invoking `make libzstd`, the build macro `ZSTD_LEGACY_MULTITHREADED_API=1`
|
||||||
|
will expose the deprecated `ZSTDMT` API exposed by `zstdmt_compress.h` in
|
||||||
|
the shared library, which is now hidden by default.
|
||||||
|
|
||||||
|
|
||||||
#### Windows : using MinGW+MSYS to create DLL
|
#### Windows : using MinGW+MSYS to create DLL
|
||||||
|
|
||||||
|
|||||||
@ -17,10 +17,21 @@
|
|||||||
|
|
||||||
|
|
||||||
/* Note : This is an internal API.
|
/* Note : This is an internal API.
|
||||||
* Some methods are still exposed (ZSTDLIB_API),
|
* These APIs used to be exposed with ZSTDLIB_API,
|
||||||
* because it used to be the only way to invoke MT compression.
|
* because it used to be the only way to invoke MT compression.
|
||||||
* Now, it's recommended to use ZSTD_compress_generic() instead.
|
* Now, it's recommended to use ZSTD_compress_generic() instead.
|
||||||
* These methods will stop being exposed in a future version */
|
*
|
||||||
|
* If you depend on these APIs and can't switch, then define
|
||||||
|
* ZSTD_LEGACY_MULTITHREADED_API when making the dynamic library.
|
||||||
|
* However, we may completely remove these functions in a future
|
||||||
|
* release, so please switch soon.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef ZSTD_LEGACY_MULTITHREADED_API
|
||||||
|
# define ZSTDMT_API ZSTDLIB_API
|
||||||
|
#else
|
||||||
|
# define ZSTDMT_API
|
||||||
|
#endif
|
||||||
|
|
||||||
/* === Dependencies === */
|
/* === Dependencies === */
|
||||||
#include <stddef.h> /* size_t */
|
#include <stddef.h> /* size_t */
|
||||||
@ -40,17 +51,17 @@
|
|||||||
|
|
||||||
/* === Memory management === */
|
/* === Memory management === */
|
||||||
typedef struct ZSTDMT_CCtx_s ZSTDMT_CCtx;
|
typedef struct ZSTDMT_CCtx_s ZSTDMT_CCtx;
|
||||||
ZSTDLIB_API ZSTDMT_CCtx* ZSTDMT_createCCtx(unsigned nbWorkers);
|
ZSTDMT_API ZSTDMT_CCtx* ZSTDMT_createCCtx(unsigned nbWorkers);
|
||||||
ZSTDLIB_API ZSTDMT_CCtx* ZSTDMT_createCCtx_advanced(unsigned nbWorkers,
|
ZSTDMT_API ZSTDMT_CCtx* ZSTDMT_createCCtx_advanced(unsigned nbWorkers,
|
||||||
ZSTD_customMem cMem);
|
ZSTD_customMem cMem);
|
||||||
ZSTDLIB_API size_t ZSTDMT_freeCCtx(ZSTDMT_CCtx* mtctx);
|
ZSTDMT_API size_t ZSTDMT_freeCCtx(ZSTDMT_CCtx* mtctx);
|
||||||
|
|
||||||
ZSTDLIB_API size_t ZSTDMT_sizeof_CCtx(ZSTDMT_CCtx* mtctx);
|
ZSTDMT_API size_t ZSTDMT_sizeof_CCtx(ZSTDMT_CCtx* mtctx);
|
||||||
|
|
||||||
|
|
||||||
/* === Simple one-pass compression function === */
|
/* === Simple one-pass compression function === */
|
||||||
|
|
||||||
ZSTDLIB_API size_t ZSTDMT_compressCCtx(ZSTDMT_CCtx* mtctx,
|
ZSTDMT_API size_t ZSTDMT_compressCCtx(ZSTDMT_CCtx* mtctx,
|
||||||
void* dst, size_t dstCapacity,
|
void* dst, size_t dstCapacity,
|
||||||
const void* src, size_t srcSize,
|
const void* src, size_t srcSize,
|
||||||
int compressionLevel);
|
int compressionLevel);
|
||||||
@ -59,31 +70,31 @@ ZSTDLIB_API size_t ZSTDMT_compressCCtx(ZSTDMT_CCtx* mtctx,
|
|||||||
|
|
||||||
/* === Streaming functions === */
|
/* === Streaming functions === */
|
||||||
|
|
||||||
ZSTDLIB_API size_t ZSTDMT_initCStream(ZSTDMT_CCtx* mtctx, int compressionLevel);
|
ZSTDMT_API size_t ZSTDMT_initCStream(ZSTDMT_CCtx* mtctx, int compressionLevel);
|
||||||
ZSTDLIB_API size_t ZSTDMT_resetCStream(ZSTDMT_CCtx* mtctx, unsigned long long pledgedSrcSize); /**< if srcSize is not known at reset time, use ZSTD_CONTENTSIZE_UNKNOWN. Note: for compatibility with older programs, 0 means the same as ZSTD_CONTENTSIZE_UNKNOWN, but it will change in the future to mean "empty" */
|
ZSTDMT_API size_t ZSTDMT_resetCStream(ZSTDMT_CCtx* mtctx, unsigned long long pledgedSrcSize); /**< if srcSize is not known at reset time, use ZSTD_CONTENTSIZE_UNKNOWN. Note: for compatibility with older programs, 0 means the same as ZSTD_CONTENTSIZE_UNKNOWN, but it will change in the future to mean "empty" */
|
||||||
|
|
||||||
ZSTDLIB_API size_t ZSTDMT_nextInputSizeHint(const ZSTDMT_CCtx* mtctx);
|
ZSTDMT_API size_t ZSTDMT_nextInputSizeHint(const ZSTDMT_CCtx* mtctx);
|
||||||
ZSTDLIB_API size_t ZSTDMT_compressStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output, ZSTD_inBuffer* input);
|
ZSTDMT_API size_t ZSTDMT_compressStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output, ZSTD_inBuffer* input);
|
||||||
|
|
||||||
ZSTDLIB_API size_t ZSTDMT_flushStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output); /**< @return : 0 == all flushed; >0 : still some data to be flushed; or an error code (ZSTD_isError()) */
|
ZSTDMT_API size_t ZSTDMT_flushStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output); /**< @return : 0 == all flushed; >0 : still some data to be flushed; or an error code (ZSTD_isError()) */
|
||||||
ZSTDLIB_API size_t ZSTDMT_endStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output); /**< @return : 0 == all flushed; >0 : still some data to be flushed; or an error code (ZSTD_isError()) */
|
ZSTDMT_API size_t ZSTDMT_endStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output); /**< @return : 0 == all flushed; >0 : still some data to be flushed; or an error code (ZSTD_isError()) */
|
||||||
|
|
||||||
|
|
||||||
/* === Advanced functions and parameters === */
|
/* === Advanced functions and parameters === */
|
||||||
|
|
||||||
ZSTDLIB_API size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
|
ZSTDMT_API size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
|
||||||
void* dst, size_t dstCapacity,
|
void* dst, size_t dstCapacity,
|
||||||
const void* src, size_t srcSize,
|
const void* src, size_t srcSize,
|
||||||
const ZSTD_CDict* cdict,
|
const ZSTD_CDict* cdict,
|
||||||
ZSTD_parameters params,
|
ZSTD_parameters params,
|
||||||
int overlapLog);
|
int overlapLog);
|
||||||
|
|
||||||
ZSTDLIB_API size_t ZSTDMT_initCStream_advanced(ZSTDMT_CCtx* mtctx,
|
ZSTDMT_API size_t ZSTDMT_initCStream_advanced(ZSTDMT_CCtx* mtctx,
|
||||||
const void* dict, size_t dictSize, /* dict can be released after init, a local copy is preserved within zcs */
|
const void* dict, size_t dictSize, /* dict can be released after init, a local copy is preserved within zcs */
|
||||||
ZSTD_parameters params,
|
ZSTD_parameters params,
|
||||||
unsigned long long pledgedSrcSize); /* pledgedSrcSize is optional and can be zero == unknown */
|
unsigned long long pledgedSrcSize); /* pledgedSrcSize is optional and can be zero == unknown */
|
||||||
|
|
||||||
ZSTDLIB_API size_t ZSTDMT_initCStream_usingCDict(ZSTDMT_CCtx* mtctx,
|
ZSTDMT_API size_t ZSTDMT_initCStream_usingCDict(ZSTDMT_CCtx* mtctx,
|
||||||
const ZSTD_CDict* cdict,
|
const ZSTD_CDict* cdict,
|
||||||
ZSTD_frameParameters fparams,
|
ZSTD_frameParameters fparams,
|
||||||
unsigned long long pledgedSrcSize); /* note : zero means empty */
|
unsigned long long pledgedSrcSize); /* note : zero means empty */
|
||||||
@ -101,12 +112,12 @@ typedef enum {
|
|||||||
* The function must be called typically after ZSTD_createCCtx() but __before ZSTDMT_init*() !__
|
* The function must be called typically after ZSTD_createCCtx() but __before ZSTDMT_init*() !__
|
||||||
* Parameters not explicitly reset by ZSTDMT_init*() remain the same in consecutive compression sessions.
|
* Parameters not explicitly reset by ZSTDMT_init*() remain the same in consecutive compression sessions.
|
||||||
* @return : 0, or an error code (which can be tested using ZSTD_isError()) */
|
* @return : 0, or an error code (which can be tested using ZSTD_isError()) */
|
||||||
ZSTDLIB_API size_t ZSTDMT_setMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSTDMT_parameter parameter, int value);
|
ZSTDMT_API size_t ZSTDMT_setMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSTDMT_parameter parameter, int value);
|
||||||
|
|
||||||
/* ZSTDMT_getMTCtxParameter() :
|
/* ZSTDMT_getMTCtxParameter() :
|
||||||
* Query the ZSTDMT_CCtx for a parameter value.
|
* Query the ZSTDMT_CCtx for a parameter value.
|
||||||
* @return : 0, or an error code (which can be tested using ZSTD_isError()) */
|
* @return : 0, or an error code (which can be tested using ZSTD_isError()) */
|
||||||
ZSTDLIB_API size_t ZSTDMT_getMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSTDMT_parameter parameter, int* value);
|
ZSTDMT_API size_t ZSTDMT_getMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSTDMT_parameter parameter, int* value);
|
||||||
|
|
||||||
|
|
||||||
/*! ZSTDMT_compressStream_generic() :
|
/*! ZSTDMT_compressStream_generic() :
|
||||||
@ -116,7 +127,7 @@ ZSTDLIB_API size_t ZSTDMT_getMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSTDMT_parameter
|
|||||||
* 0 if fully flushed
|
* 0 if fully flushed
|
||||||
* or an error code
|
* or an error code
|
||||||
* note : needs to be init using any ZSTD_initCStream*() variant */
|
* note : needs to be init using any ZSTD_initCStream*() variant */
|
||||||
ZSTDLIB_API size_t ZSTDMT_compressStream_generic(ZSTDMT_CCtx* mtctx,
|
ZSTDMT_API size_t ZSTDMT_compressStream_generic(ZSTDMT_CCtx* mtctx,
|
||||||
ZSTD_outBuffer* output,
|
ZSTD_outBuffer* output,
|
||||||
ZSTD_inBuffer* input,
|
ZSTD_inBuffer* input,
|
||||||
ZSTD_EndDirective endOp);
|
ZSTD_EndDirective endOp);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user