1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | #ifndef DECOMPRESSOR_H |
3 | #define DECOMPRESSOR_H |
4 | /* |
5 | * Squashfs - a compressed read only filesystem for Linux |
6 | * |
7 | * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 |
8 | * Phillip Lougher <phillip@squashfs.org.uk> |
9 | * |
10 | * decompressor.h |
11 | */ |
12 | |
13 | #include <linux/bio.h> |
14 | |
15 | struct squashfs_decompressor { |
16 | void *(*init)(struct squashfs_sb_info *, void *); |
17 | void *(*comp_opts)(struct squashfs_sb_info *, void *, int); |
18 | void (*free)(void *); |
19 | int (*decompress)(struct squashfs_sb_info *, void *, |
20 | struct bio *, int, int, struct squashfs_page_actor *); |
21 | int id; |
22 | char *name; |
23 | int alloc_buffer; |
24 | int supported; |
25 | }; |
26 | |
27 | static inline void *squashfs_comp_opts(struct squashfs_sb_info *msblk, |
28 | void *buff, int length) |
29 | { |
30 | return msblk->decompressor->comp_opts ? |
31 | msblk->decompressor->comp_opts(msblk, buff, length) : NULL; |
32 | } |
33 | |
34 | #ifdef CONFIG_SQUASHFS_XZ |
35 | extern const struct squashfs_decompressor squashfs_xz_comp_ops; |
36 | #endif |
37 | |
38 | #ifdef CONFIG_SQUASHFS_LZ4 |
39 | extern const struct squashfs_decompressor squashfs_lz4_comp_ops; |
40 | #endif |
41 | |
42 | #ifdef CONFIG_SQUASHFS_LZO |
43 | extern const struct squashfs_decompressor squashfs_lzo_comp_ops; |
44 | #endif |
45 | |
46 | #ifdef CONFIG_SQUASHFS_ZLIB |
47 | extern const struct squashfs_decompressor squashfs_zlib_comp_ops; |
48 | #endif |
49 | |
50 | #ifdef CONFIG_SQUASHFS_ZSTD |
51 | extern const struct squashfs_decompressor squashfs_zstd_comp_ops; |
52 | #endif |
53 | |
54 | #endif |
55 | |