summaryrefslogtreecommitdiff
path: root/include/sqfs/block.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/sqfs/block.h')
-rw-r--r--include/sqfs/block.h31
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
*