lib/zstd/zstd_compress_module.c
Source file repositories/reference/linux-study-clean/lib/zstd/zstd_compress_module.c
File Facts
- System
- Linux kernel
- Corpus path
lib/zstd/zstd_compress_module.c- Extension
.c- Size
- 8973 bytes
- Lines
- 287
- Domain
- Kernel Services
- Bucket
- lib
- Inferred role
- Kernel Services: exported/initcall integration point
- Status
- integration implementation candidate
Why This File Exists
Shared kernel service surface used by multiple subsystems, including helpers, cryptography, virtualization support, and async I/O infrastructure.
- Shared kernel service surface used by multiple subsystems, including helpers, cryptography, virtualization support, and async I/O infrastructure.
- Exports symbols or registers init work; inspect boot/module ordering and who consumes the exported contract.
Dependency Surface
linux/kernel.hlinux/module.hlinux/string.hlinux/zstd.hcommon/zstd_deps.hcommon/zstd_internal.hcompress/zstd_compress_internal.h
Detected Declarations
function zstd_cctx_initfunction zstd_min_clevelfunction zstd_max_clevelfunction zstd_default_clevelfunction zstd_compress_boundfunction zstd_get_paramsfunction zstd_get_cparamsfunction zstd_cctx_set_paramfunction zstd_cctx_workspace_boundfunction dummy_external_sequence_producerfunction init_cctx_params_from_compress_paramsfunction zstd_cctx_workspace_bound_with_ext_seq_prodfunction zstd_cstream_workspace_bound_with_ext_seq_prodfunction zstd_free_cctxfunction zstd_free_cdictfunction zstd_compress_cctxfunction zstd_compress_using_cdictfunction zstd_cstream_workspace_boundfunction zstd_reset_cstreamfunction zstd_compress_streamfunction zstd_flush_streamfunction zstd_end_streamfunction zstd_register_sequence_producerfunction zstd_compress_sequences_and_literalsexport zstd_min_clevelexport zstd_max_clevelexport zstd_default_clevelexport zstd_compress_boundexport zstd_get_paramsexport zstd_get_cparamsexport zstd_cctx_set_paramexport zstd_cctx_workspace_boundexport zstd_cctx_workspace_bound_with_ext_seq_prodexport zstd_cstream_workspace_bound_with_ext_seq_prodexport zstd_init_cctxexport zstd_create_cctx_advancedexport zstd_free_cctxexport zstd_create_cdict_byreferenceexport zstd_free_cdictexport zstd_compress_cctxexport zstd_compress_using_cdictexport zstd_cstream_workspace_boundexport zstd_init_cstreamexport zstd_reset_cstreamexport zstd_compress_streamexport zstd_flush_streamexport zstd_end_streamexport zstd_register_sequence_producer
Annotated Snippet
// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
* All rights reserved.
*
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
* You may select, at your option, one of the above-listed licenses.
*/
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/string.h>
#include <linux/zstd.h>
#include "common/zstd_deps.h"
#include "common/zstd_internal.h"
#include "compress/zstd_compress_internal.h"
#define ZSTD_FORWARD_IF_ERR(ret) \
do { \
size_t const __ret = (ret); \
if (ZSTD_isError(__ret)) \
return __ret; \
} while (0)
static size_t zstd_cctx_init(zstd_cctx *cctx, const zstd_parameters *parameters,
unsigned long long pledged_src_size)
{
ZSTD_FORWARD_IF_ERR(ZSTD_CCtx_reset(
cctx, ZSTD_reset_session_and_parameters));
ZSTD_FORWARD_IF_ERR(ZSTD_CCtx_setPledgedSrcSize(
cctx, pledged_src_size));
ZSTD_FORWARD_IF_ERR(ZSTD_CCtx_setParameter(
cctx, ZSTD_c_windowLog, parameters->cParams.windowLog));
ZSTD_FORWARD_IF_ERR(ZSTD_CCtx_setParameter(
cctx, ZSTD_c_hashLog, parameters->cParams.hashLog));
ZSTD_FORWARD_IF_ERR(ZSTD_CCtx_setParameter(
cctx, ZSTD_c_chainLog, parameters->cParams.chainLog));
ZSTD_FORWARD_IF_ERR(ZSTD_CCtx_setParameter(
cctx, ZSTD_c_searchLog, parameters->cParams.searchLog));
ZSTD_FORWARD_IF_ERR(ZSTD_CCtx_setParameter(
cctx, ZSTD_c_minMatch, parameters->cParams.minMatch));
ZSTD_FORWARD_IF_ERR(ZSTD_CCtx_setParameter(
cctx, ZSTD_c_targetLength, parameters->cParams.targetLength));
ZSTD_FORWARD_IF_ERR(ZSTD_CCtx_setParameter(
cctx, ZSTD_c_strategy, parameters->cParams.strategy));
ZSTD_FORWARD_IF_ERR(ZSTD_CCtx_setParameter(
cctx, ZSTD_c_contentSizeFlag, parameters->fParams.contentSizeFlag));
ZSTD_FORWARD_IF_ERR(ZSTD_CCtx_setParameter(
cctx, ZSTD_c_checksumFlag, parameters->fParams.checksumFlag));
ZSTD_FORWARD_IF_ERR(ZSTD_CCtx_setParameter(
cctx, ZSTD_c_dictIDFlag, !parameters->fParams.noDictIDFlag));
return 0;
}
int zstd_min_clevel(void)
{
return ZSTD_minCLevel();
}
EXPORT_SYMBOL(zstd_min_clevel);
int zstd_max_clevel(void)
{
return ZSTD_maxCLevel();
}
EXPORT_SYMBOL(zstd_max_clevel);
int zstd_default_clevel(void)
{
return ZSTD_defaultCLevel();
}
EXPORT_SYMBOL(zstd_default_clevel);
size_t zstd_compress_bound(size_t src_size)
{
return ZSTD_compressBound(src_size);
}
EXPORT_SYMBOL(zstd_compress_bound);
zstd_parameters zstd_get_params(int level,
unsigned long long estimated_src_size)
{
return ZSTD_getParams(level, estimated_src_size, 0);
}
EXPORT_SYMBOL(zstd_get_params);
zstd_compression_parameters zstd_get_cparams(int level,
unsigned long long estimated_src_size, size_t dict_size)
Annotation
- Immediate include surface: `linux/kernel.h`, `linux/module.h`, `linux/string.h`, `linux/zstd.h`, `common/zstd_deps.h`, `common/zstd_internal.h`, `compress/zstd_compress_internal.h`.
- Detected declarations: `function zstd_cctx_init`, `function zstd_min_clevel`, `function zstd_max_clevel`, `function zstd_default_clevel`, `function zstd_compress_bound`, `function zstd_get_params`, `function zstd_get_cparams`, `function zstd_cctx_set_param`, `function zstd_cctx_workspace_bound`, `function dummy_external_sequence_producer`.
- Atlas domain: Kernel Services / lib.
- Implementation status: integration implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.