/* SPDX-License-Identifier: GPL-2.0+ */ /* * erofs-utils/lib/compressor.h * * Copyright (C) 2018-2019 HUAWEI, Inc. * http://www.huawei.com/ * Created by Gao Xiang */ #ifndef __EROFS_LIB_COMPRESSOR_H #define __EROFS_LIB_COMPRESSOR_H #include "erofs/defs.h" struct erofs_compress; struct erofs_compressor { const char *name; int default_level; int best_level; int (*init)(struct erofs_compress *c); int (*exit)(struct erofs_compress *c); int (*compress_destsize)(struct erofs_compress *c, int compress_level, void *src, unsigned int *srcsize, void *dst, unsigned int dstsize); }; struct erofs_compress { struct erofs_compressor *alg; unsigned int compress_threshold; /* *_destsize specific */ unsigned int destsize_alignsize; unsigned int destsize_redzone_begin; unsigned int destsize_redzone_end; void *private_data; }; /* list of compression algorithms */ extern struct erofs_compressor erofs_compressor_lz4; extern struct erofs_compressor erofs_compressor_lz4hc; int erofs_compress_destsize(struct erofs_compress *c, int compression_level, void *src, unsigned int *srcsize, void *dst, unsigned int dstsize); int erofs_compressor_init(struct erofs_compress *c, char *alg_name); int erofs_compressor_exit(struct erofs_compress *c); #endif