linux/fs/squashfs/decompressor.h
<<
>>
Prefs
   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
  15struct 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     supported;
  24};
  25
  26static inline void *squashfs_comp_opts(struct squashfs_sb_info *msblk,
  27                                                        void *buff, int length)
  28{
  29        return msblk->decompressor->comp_opts ?
  30                msblk->decompressor->comp_opts(msblk, buff, length) : NULL;
  31}
  32
  33#ifdef CONFIG_SQUASHFS_XZ
  34extern const struct squashfs_decompressor squashfs_xz_comp_ops;
  35#endif
  36
  37#ifdef CONFIG_SQUASHFS_LZ4
  38extern const struct squashfs_decompressor squashfs_lz4_comp_ops;
  39#endif
  40
  41#ifdef CONFIG_SQUASHFS_LZO
  42extern const struct squashfs_decompressor squashfs_lzo_comp_ops;
  43#endif
  44
  45#ifdef CONFIG_SQUASHFS_ZLIB
  46extern const struct squashfs_decompressor squashfs_zlib_comp_ops;
  47#endif
  48
  49#ifdef CONFIG_SQUASHFS_ZSTD
  50extern const struct squashfs_decompressor squashfs_zstd_comp_ops;
  51#endif
  52
  53#endif
  54