1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Copyright (C) 2020 Bootlin 4 * 5 * Author: Joao Marcos Costa <joaomarcos.costa@bootlin.com> 6 */ 7 8#ifndef SQFS_DECOMPRESSOR_H 9#define SQFS_DECOMPRESSOR_H 10 11#include <stdint.h> 12#include "sqfs_filesystem.h" 13 14#define SQFS_COMP_ZLIB 1 15#define SQFS_COMP_LZMA 2 16#define SQFS_COMP_LZO 3 17#define SQFS_COMP_XZ 4 18#define SQFS_COMP_LZ4 5 19#define SQFS_COMP_ZSTD 6 20 21/* LZMA does not support any compression options */ 22 23struct squashfs_gzip_opts { 24 u32 compression_level; 25 u16 window_size; 26 u16 strategies; 27}; 28 29struct squashfs_xz_opts { 30 u32 dictionary_size; 31 u32 executable_filters; 32}; 33 34struct squashfs_lz4_opts { 35 u32 version; 36 u32 flags; 37}; 38 39struct squashfs_zstd_opts { 40 u32 compression_level; 41}; 42 43struct squashfs_lzo_opts { 44 u32 algorithm; 45 u32 level; 46}; 47 48union squashfs_compression_opts { 49 struct squashfs_gzip_opts *gzip; 50 struct squashfs_xz_opts *xz; 51 struct squashfs_lz4_opts *lz4; 52 struct squashfs_zstd_opts *zstd; 53 struct squashfs_lzo_opts *lzo; 54}; 55 56int sqfs_decompress(struct squashfs_ctxt *ctxt, void *dest, 57 unsigned long *dest_len, void *source, u32 src_len); 58int sqfs_decompressor_init(struct squashfs_ctxt *ctxt); 59void sqfs_decompressor_cleanup(struct squashfs_ctxt *ctxt); 60 61#endif /* SQFS_DECOMPRESSOR_H */ 62