Commit | Line | Data |
---|---|---|
e0c1b49f NT |
1 | // SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause |
2 | /* | |
3 | * Copyright (c) Facebook, Inc. | |
4 | * All rights reserved. | |
5 | * | |
6 | * This source code is licensed under both the BSD-style license (found in the | |
7 | * LICENSE file in the root directory of this source tree) and the GPLv2 (found | |
8 | * in the COPYING file in the root directory of this source tree). | |
9 | * You may select, at your option, one of the above-listed licenses. | |
10 | */ | |
11 | ||
12 | #include <linux/kernel.h> | |
13 | #include <linux/module.h> | |
14 | #include <linux/string.h> | |
15 | #include <linux/zstd.h> | |
16 | ||
17 | #include "common/zstd_deps.h" | |
18 | ||
19 | /* Common symbols. zstd_compress must depend on zstd_decompress. */ | |
20 | ||
21 | unsigned int zstd_is_error(size_t code) | |
22 | { | |
23 | return ZSTD_isError(code); | |
24 | } | |
25 | EXPORT_SYMBOL(zstd_is_error); | |
26 | ||
27 | zstd_error_code zstd_get_error_code(size_t code) | |
28 | { | |
29 | return ZSTD_getErrorCode(code); | |
30 | } | |
31 | EXPORT_SYMBOL(zstd_get_error_code); | |
32 | ||
33 | const char *zstd_get_error_name(size_t code) | |
34 | { | |
35 | return ZSTD_getErrorName(code); | |
36 | } | |
37 | EXPORT_SYMBOL(zstd_get_error_name); | |
38 | ||
39 | /* Decompression symbols. */ | |
40 | ||
41 | size_t zstd_dctx_workspace_bound(void) | |
42 | { | |
43 | return ZSTD_estimateDCtxSize(); | |
44 | } | |
45 | EXPORT_SYMBOL(zstd_dctx_workspace_bound); | |
46 | ||
47 | zstd_dctx *zstd_init_dctx(void *workspace, size_t workspace_size) | |
48 | { | |
49 | if (workspace == NULL) | |
50 | return NULL; | |
51 | return ZSTD_initStaticDCtx(workspace, workspace_size); | |
52 | } | |
53 | EXPORT_SYMBOL(zstd_init_dctx); | |
54 | ||
55 | size_t zstd_decompress_dctx(zstd_dctx *dctx, void *dst, size_t dst_capacity, | |
56 | const void *src, size_t src_size) | |
57 | { | |
58 | return ZSTD_decompressDCtx(dctx, dst, dst_capacity, src, src_size); | |
59 | } | |
60 | EXPORT_SYMBOL(zstd_decompress_dctx); | |
61 | ||
62 | size_t zstd_dstream_workspace_bound(size_t max_window_size) | |
63 | { | |
64 | return ZSTD_estimateDStreamSize(max_window_size); | |
65 | } | |
66 | EXPORT_SYMBOL(zstd_dstream_workspace_bound); | |
67 | ||
68 | zstd_dstream *zstd_init_dstream(size_t max_window_size, void *workspace, | |
69 | size_t workspace_size) | |
70 | { | |
71 | if (workspace == NULL) | |
72 | return NULL; | |
73 | (void)max_window_size; | |
74 | return ZSTD_initStaticDStream(workspace, workspace_size); | |
75 | } | |
76 | EXPORT_SYMBOL(zstd_init_dstream); | |
77 | ||
78 | size_t zstd_reset_dstream(zstd_dstream *dstream) | |
79 | { | |
80 | return ZSTD_resetDStream(dstream); | |
81 | } | |
82 | EXPORT_SYMBOL(zstd_reset_dstream); | |
83 | ||
84 | size_t zstd_decompress_stream(zstd_dstream *dstream, zstd_out_buffer *output, | |
85 | zstd_in_buffer *input) | |
86 | { | |
87 | return ZSTD_decompressStream(dstream, output, input); | |
88 | } | |
89 | EXPORT_SYMBOL(zstd_decompress_stream); | |
90 | ||
91 | size_t zstd_find_frame_compressed_size(const void *src, size_t src_size) | |
92 | { | |
93 | return ZSTD_findFrameCompressedSize(src, src_size); | |
94 | } | |
95 | EXPORT_SYMBOL(zstd_find_frame_compressed_size); | |
96 | ||
97 | size_t zstd_get_frame_header(zstd_frame_header *header, const void *src, | |
98 | size_t src_size) | |
99 | { | |
100 | return ZSTD_getFrameHeader(header, src, src_size); | |
101 | } | |
102 | EXPORT_SYMBOL(zstd_get_frame_header); | |
103 | ||
104 | MODULE_LICENSE("Dual BSD/GPL"); | |
105 | MODULE_DESCRIPTION("Zstd Decompressor"); |