uboot/fs/squashfs/sqfs_decompressor.h
<<
>>
Prefs
   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