Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
0002 /*
0003  * Copyright (c) Facebook, Inc.
0004  * All rights reserved.
0005  *
0006  * This source code is licensed under both the BSD-style license (found in the
0007  * LICENSE file in the root directory of this source tree) and the GPLv2 (found
0008  * in the COPYING file in the root directory of this source tree).
0009  * You may select, at your option, one of the above-listed licenses.
0010  */
0011 
0012 #include <linux/kernel.h>
0013 #include <linux/module.h>
0014 #include <linux/string.h>
0015 #include <linux/zstd.h>
0016 
0017 #include "common/zstd_deps.h"
0018 
0019 /* Common symbols. zstd_compress must depend on zstd_decompress. */
0020 
0021 unsigned int zstd_is_error(size_t code)
0022 {
0023     return ZSTD_isError(code);
0024 }
0025 EXPORT_SYMBOL(zstd_is_error);
0026 
0027 zstd_error_code zstd_get_error_code(size_t code)
0028 {
0029     return ZSTD_getErrorCode(code);
0030 }
0031 EXPORT_SYMBOL(zstd_get_error_code);
0032 
0033 const char *zstd_get_error_name(size_t code)
0034 {
0035     return ZSTD_getErrorName(code);
0036 }
0037 EXPORT_SYMBOL(zstd_get_error_name);
0038 
0039 /* Decompression symbols. */
0040 
0041 size_t zstd_dctx_workspace_bound(void)
0042 {
0043     return ZSTD_estimateDCtxSize();
0044 }
0045 EXPORT_SYMBOL(zstd_dctx_workspace_bound);
0046 
0047 zstd_dctx *zstd_init_dctx(void *workspace, size_t workspace_size)
0048 {
0049     if (workspace == NULL)
0050         return NULL;
0051     return ZSTD_initStaticDCtx(workspace, workspace_size);
0052 }
0053 EXPORT_SYMBOL(zstd_init_dctx);
0054 
0055 size_t zstd_decompress_dctx(zstd_dctx *dctx, void *dst, size_t dst_capacity,
0056     const void *src, size_t src_size)
0057 {
0058     return ZSTD_decompressDCtx(dctx, dst, dst_capacity, src, src_size);
0059 }
0060 EXPORT_SYMBOL(zstd_decompress_dctx);
0061 
0062 size_t zstd_dstream_workspace_bound(size_t max_window_size)
0063 {
0064     return ZSTD_estimateDStreamSize(max_window_size);
0065 }
0066 EXPORT_SYMBOL(zstd_dstream_workspace_bound);
0067 
0068 zstd_dstream *zstd_init_dstream(size_t max_window_size, void *workspace,
0069     size_t workspace_size)
0070 {
0071     if (workspace == NULL)
0072         return NULL;
0073     (void)max_window_size;
0074     return ZSTD_initStaticDStream(workspace, workspace_size);
0075 }
0076 EXPORT_SYMBOL(zstd_init_dstream);
0077 
0078 size_t zstd_reset_dstream(zstd_dstream *dstream)
0079 {
0080     return ZSTD_resetDStream(dstream);
0081 }
0082 EXPORT_SYMBOL(zstd_reset_dstream);
0083 
0084 size_t zstd_decompress_stream(zstd_dstream *dstream, zstd_out_buffer *output,
0085     zstd_in_buffer *input)
0086 {
0087     return ZSTD_decompressStream(dstream, output, input);
0088 }
0089 EXPORT_SYMBOL(zstd_decompress_stream);
0090 
0091 size_t zstd_find_frame_compressed_size(const void *src, size_t src_size)
0092 {
0093     return ZSTD_findFrameCompressedSize(src, src_size);
0094 }
0095 EXPORT_SYMBOL(zstd_find_frame_compressed_size);
0096 
0097 size_t zstd_get_frame_header(zstd_frame_header *header, const void *src,
0098     size_t src_size)
0099 {
0100     return ZSTD_getFrameHeader(header, src, src_size);
0101 }
0102 EXPORT_SYMBOL(zstd_get_frame_header);
0103 
0104 MODULE_LICENSE("Dual BSD/GPL");
0105 MODULE_DESCRIPTION("Zstd Decompressor");