decompressor.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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 <[email protected]>
  9. *
  10. * decompressor.h
  11. */
  12. #include <linux/bio.h>
  13. struct squashfs_decompressor {
  14. void *(*init)(struct squashfs_sb_info *, void *);
  15. void *(*comp_opts)(struct squashfs_sb_info *, void *, int);
  16. void (*free)(void *);
  17. int (*decompress)(struct squashfs_sb_info *, void *,
  18. struct bio *, int, int, struct squashfs_page_actor *);
  19. int id;
  20. char *name;
  21. int alloc_buffer;
  22. int supported;
  23. };
  24. static inline void *squashfs_comp_opts(struct squashfs_sb_info *msblk,
  25. void *buff, int length)
  26. {
  27. return msblk->decompressor->comp_opts ?
  28. msblk->decompressor->comp_opts(msblk, buff, length) : NULL;
  29. }
  30. #ifdef CONFIG_SQUASHFS_XZ
  31. extern const struct squashfs_decompressor squashfs_xz_comp_ops;
  32. #endif
  33. #ifdef CONFIG_SQUASHFS_LZ4
  34. extern const struct squashfs_decompressor squashfs_lz4_comp_ops;
  35. #endif
  36. #ifdef CONFIG_SQUASHFS_LZO
  37. extern const struct squashfs_decompressor squashfs_lzo_comp_ops;
  38. #endif
  39. #ifdef CONFIG_SQUASHFS_ZLIB
  40. extern const struct squashfs_decompressor squashfs_zlib_comp_ops;
  41. #endif
  42. #ifdef CONFIG_SQUASHFS_ZSTD
  43. extern const struct squashfs_decompressor squashfs_zstd_comp_ops;
  44. #endif
  45. #endif