diff options
Diffstat (limited to 'include/sqfs/block.h')
-rw-r--r-- | include/sqfs/block.h | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/include/sqfs/block.h b/include/sqfs/block.h index 15d269d..2a765e0 100644 --- a/include/sqfs/block.h +++ b/include/sqfs/block.h @@ -25,9 +25,38 @@ /** * @file block.h * - * @brief Contains the definition of the @ref sqfs_block_t data structure. + * @brief Contains on-disk data structures for data block management, + * helper macros and the higher level @ref sqfs_block_t structure. */ +#define SQFS_META_BLOCK_SIZE 8192 + +#define SQFS_IS_BLOCK_COMPRESSED(size) (((size) & (1 << 24)) == 0) +#define SQFS_ON_DISK_BLOCK_SIZE(size) ((size) & ((1 << 24) - 1)) +#define SQFS_IS_SPARSE_BLOCK(size) (SQFS_ON_DISK_BLOCK_SIZE(size) == 0) + +/** + * @struct sqfs_fragment_t + * + * @brief Data structure that makes up the fragment table entries. + */ +struct sqfs_fragment_t { + /** + * @brief Location of the fragment block on-disk. + */ + uint64_t start_offset; + + /** + * @brief Size of the fragment block in bytes. + */ + uint32_t size; + + /** + * @brief Unused. Always initialize this to 0. + */ + uint32_t pad0; +}; + /** * @enum E_SQFS_BLK_FLAGS * |