refactor: decouple the executable file implementations with execve functionality.
[lunaix-os.git] / lunaix-os / includes / lunaix / block.h
index 551bc22818a64531fad899c05bfc2243ad82a261..0ddd00058cb585a22fdf6b17095d26582c85b00c 100644 (file)
@@ -9,6 +9,16 @@
 #define PARTITION_NAME_SIZE 48
 #define DEV_ID_SIZE 32
 
+struct block_dev;
+
+struct block_dev_ops
+{
+    int (*block_read)(struct block_dev*, void*, u64_t, size_t);
+    int (*block_write)(struct block_dev*, void*, u64_t, size_t);
+    void* (*block_alloc)(struct block_dev*);
+    void (*block_free)(struct block_dev*, void*);
+};
+
 struct block_dev
 {
     struct llist_header parts;
@@ -20,6 +30,7 @@ struct block_dev
     u64_t start_lba;
     u64_t end_lba;
     u32_t blk_size;
+    struct block_dev_ops ops;
 };
 
 // Lunaix Partition Table
@@ -33,7 +44,7 @@ struct lpt_header
 } __attribute__((packed));
 
 typedef u64_t partition_t;
-typedef uint32_t bdev_t;
+typedef u32_t bdev_t;
 typedef void (*devfs_exporter)(struct block_dev* bdev, void* fsnode);
 
 void