X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/a36758a5018f6a3792c164cd2a313d4f61b7111e..f6ab9c9ababa2cf6e5c723b83ffb9362094054e8:/lunaix-os/kernel/block/block.c diff --git a/lunaix-os/kernel/block/block.c b/lunaix-os/kernel/block/block.c index 1cade0c..460e94b 100644 --- a/lunaix-os/kernel/block/block.c +++ b/lunaix-os/kernel/block/block.c @@ -1,16 +1,18 @@ -#include #include #include + +#include + #include + +#include #include #include #include +#include #include -#include - -#include - #include +#include #define BLOCK_EREAD 1 #define BLOCK_ESIG 2 @@ -24,6 +26,7 @@ LOG_MODULE("BLOCK") static struct cake_pile* lbd_pile; static struct block_dev** dev_registry; static struct twifs_node* blk_sysroot; +static struct device* blk_parent_dev; int free_slot = 0; @@ -41,6 +44,7 @@ block_init() dev_registry = vcalloc(sizeof(struct block_dev*), MAX_DEV); free_slot = 0; blk_sysroot = twifs_dir_node(NULL, "block"); + blk_parent_dev = device_addcat(NULL, "block"); } int @@ -314,11 +318,12 @@ __block_register(struct block_dev* bdev) return 0; } - struct device* dev = device_addvol(NULL, bdev, "sd%c", 'a' + free_slot); - dev->write = __block_write; - dev->write_page = __block_write_page; - dev->read = __block_read; - dev->read_page = __block_read_page; + struct device* dev = + device_addvol(blk_parent_dev, bdev, "sd%c", 'a' + free_slot); + dev->ops.write = __block_write; + dev->ops.write_page = __block_write_page; + dev->ops.read = __block_read; + dev->ops.read_page = __block_read_page; bdev->dev = dev; strcpy(bdev->bdev_id, dev->name_val); @@ -338,10 +343,10 @@ blk_mount_part(struct block_dev* bdev, struct device* dev = device_addvol(NULL, pbdev, "%sp%d", bdev->bdev_id, index + 1); - dev->write = __block_write; - dev->write_page = __block_write_page; - dev->read = __block_read; - dev->read_page = __block_read_page; + dev->ops.write = __block_write; + dev->ops.write_page = __block_write_page; + dev->ops.read = __block_read; + dev->ops.read_page = __block_read_page; pbdev->start_lba = start_lba; pbdev->end_lba = end_lba;