zstd_decompress_module.c 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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. #include <linux/kernel.h>
  12. #include <linux/module.h>
  13. #include <linux/string.h>
  14. #include <linux/zstd.h>
  15. #include "common/zstd_deps.h"
  16. /* Common symbols. zstd_compress must depend on zstd_decompress. */
  17. unsigned int zstd_is_error(size_t code)
  18. {
  19. return ZSTD_isError(code);
  20. }
  21. EXPORT_SYMBOL(zstd_is_error);
  22. zstd_error_code zstd_get_error_code(size_t code)
  23. {
  24. return ZSTD_getErrorCode(code);
  25. }
  26. EXPORT_SYMBOL(zstd_get_error_code);
  27. const char *zstd_get_error_name(size_t code)
  28. {
  29. return ZSTD_getErrorName(code);
  30. }
  31. EXPORT_SYMBOL(zstd_get_error_name);
  32. /* Decompression symbols. */
  33. size_t zstd_dctx_workspace_bound(void)
  34. {
  35. return ZSTD_estimateDCtxSize();
  36. }
  37. EXPORT_SYMBOL(zstd_dctx_workspace_bound);
  38. zstd_dctx *zstd_init_dctx(void *workspace, size_t workspace_size)
  39. {
  40. if (workspace == NULL)
  41. return NULL;
  42. return ZSTD_initStaticDCtx(workspace, workspace_size);
  43. }
  44. EXPORT_SYMBOL(zstd_init_dctx);
  45. size_t zstd_decompress_dctx(zstd_dctx *dctx, void *dst, size_t dst_capacity,
  46. const void *src, size_t src_size)
  47. {
  48. return ZSTD_decompressDCtx(dctx, dst, dst_capacity, src, src_size);
  49. }
  50. EXPORT_SYMBOL(zstd_decompress_dctx);
  51. size_t zstd_dstream_workspace_bound(size_t max_window_size)
  52. {
  53. return ZSTD_estimateDStreamSize(max_window_size);
  54. }
  55. EXPORT_SYMBOL(zstd_dstream_workspace_bound);
  56. zstd_dstream *zstd_init_dstream(size_t max_window_size, void *workspace,
  57. size_t workspace_size)
  58. {
  59. if (workspace == NULL)
  60. return NULL;
  61. (void)max_window_size;
  62. return ZSTD_initStaticDStream(workspace, workspace_size);
  63. }
  64. EXPORT_SYMBOL(zstd_init_dstream);
  65. size_t zstd_reset_dstream(zstd_dstream *dstream)
  66. {
  67. return ZSTD_resetDStream(dstream);
  68. }
  69. EXPORT_SYMBOL(zstd_reset_dstream);
  70. size_t zstd_decompress_stream(zstd_dstream *dstream, zstd_out_buffer *output,
  71. zstd_in_buffer *input)
  72. {
  73. return ZSTD_decompressStream(dstream, output, input);
  74. }
  75. EXPORT_SYMBOL(zstd_decompress_stream);
  76. size_t zstd_find_frame_compressed_size(const void *src, size_t src_size)
  77. {
  78. return ZSTD_findFrameCompressedSize(src, src_size);
  79. }
  80. EXPORT_SYMBOL(zstd_find_frame_compressed_size);
  81. size_t zstd_get_frame_header(zstd_frame_header *header, const void *src,
  82. size_t src_size)
  83. {
  84. return ZSTD_getFrameHeader(header, src, src_size);
  85. }
  86. EXPORT_SYMBOL(zstd_get_frame_header);
  87. MODULE_LICENSE("Dual BSD/GPL");
  88. MODULE_DESCRIPTION("Zstd Decompressor");