feat: block partition support
[lunaix-os.git] / lunaix-os / includes / lunaix / block.h
index 4b0c824d1ca06f77e3da46c9a53628da3b15ea09..551bc22818a64531fad899c05bfc2243ad82a261 100644 (file)
 
 struct block_dev
 {
-    char bdev_id[DEV_ID_SIZE];
-    char name[PARTITION_NAME_SIZE];
+    struct llist_header parts;
     struct blkio_context* blkio;
     struct device* dev;
+    char bdev_id[DEV_ID_SIZE];
+    char name[PARTITION_NAME_SIZE];
     void* driver;
+    u64_t start_lba;
     u64_t end_lba;
     u32_t blk_size;
 };
 
-struct lpt_entry
-{
-    char part_name[PARTITION_NAME_SIZE];
-    u64_t base_lba;
-    u64_t end_lba;
-} __attribute__((packed));
-
 // Lunaix Partition Table
 struct lpt_header
 {
@@ -56,4 +51,11 @@ blk_mapping_init();
 void
 blk_set_blkmapping(struct block_dev* bdev, void* fsnode);
 
+struct block_dev*
+blk_mount_part(struct block_dev* bdev,
+               const char* name,
+               size_t index,
+               u64_t start_lba,
+               u64_t end_lba);
+
 #endif /* __LUNAIX_BLOCK_H */