18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci#ifndef DECOMPRESSOR_H 38c2ecf20Sopenharmony_ci#define DECOMPRESSOR_H 48c2ecf20Sopenharmony_ci/* 58c2ecf20Sopenharmony_ci * Squashfs - a compressed read only filesystem for Linux 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 88c2ecf20Sopenharmony_ci * Phillip Lougher <phillip@squashfs.org.uk> 98c2ecf20Sopenharmony_ci * 108c2ecf20Sopenharmony_ci * decompressor.h 118c2ecf20Sopenharmony_ci */ 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#include <linux/bio.h> 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_cistruct squashfs_decompressor { 168c2ecf20Sopenharmony_ci void *(*init)(struct squashfs_sb_info *, void *); 178c2ecf20Sopenharmony_ci void *(*comp_opts)(struct squashfs_sb_info *, void *, int); 188c2ecf20Sopenharmony_ci void (*free)(void *); 198c2ecf20Sopenharmony_ci int (*decompress)(struct squashfs_sb_info *, void *, 208c2ecf20Sopenharmony_ci struct bio *, int, int, struct squashfs_page_actor *); 218c2ecf20Sopenharmony_ci int id; 228c2ecf20Sopenharmony_ci char *name; 238c2ecf20Sopenharmony_ci int supported; 248c2ecf20Sopenharmony_ci}; 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_cistatic inline void *squashfs_comp_opts(struct squashfs_sb_info *msblk, 278c2ecf20Sopenharmony_ci void *buff, int length) 288c2ecf20Sopenharmony_ci{ 298c2ecf20Sopenharmony_ci return msblk->decompressor->comp_opts ? 308c2ecf20Sopenharmony_ci msblk->decompressor->comp_opts(msblk, buff, length) : NULL; 318c2ecf20Sopenharmony_ci} 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci#ifdef CONFIG_SQUASHFS_XZ 348c2ecf20Sopenharmony_ciextern const struct squashfs_decompressor squashfs_xz_comp_ops; 358c2ecf20Sopenharmony_ci#endif 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ci#ifdef CONFIG_SQUASHFS_LZ4 388c2ecf20Sopenharmony_ciextern const struct squashfs_decompressor squashfs_lz4_comp_ops; 398c2ecf20Sopenharmony_ci#endif 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci#ifdef CONFIG_SQUASHFS_LZO 428c2ecf20Sopenharmony_ciextern const struct squashfs_decompressor squashfs_lzo_comp_ops; 438c2ecf20Sopenharmony_ci#endif 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci#ifdef CONFIG_SQUASHFS_ZLIB 468c2ecf20Sopenharmony_ciextern const struct squashfs_decompressor squashfs_zlib_comp_ops; 478c2ecf20Sopenharmony_ci#endif 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci#ifdef CONFIG_SQUASHFS_ZSTD 508c2ecf20Sopenharmony_ciextern const struct squashfs_decompressor squashfs_zstd_comp_ops; 518c2ecf20Sopenharmony_ci#endif 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ci#endif 54