X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/0b6fbe304e14f104a9e8cf43a09bf60709d44207..8b8f49b713d64065775fe538232f8639083601bd:/lunaix-os/kernel/block/block.c diff --git a/lunaix-os/kernel/block/block.c b/lunaix-os/kernel/block/block.c index f699169..c78cd26 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 @@ -316,16 +318,19 @@ __block_register(struct block_dev* bdev) return 0; } - struct device* dev = - device_addvol(blk_parent_dev, 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_allocvol(blk_parent_dev, bdev); + 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); + + device_register(dev, bdev->class, "sd%c", 'a' + free_slot); dev_registry[free_slot++] = bdev; + + strcpy(bdev->bdev_id, dev->name_val); + return 1; } @@ -339,12 +344,11 @@ blk_mount_part(struct block_dev* bdev, struct block_dev* pbdev = cake_grab(lbd_pile); memcpy(pbdev, bdev, sizeof(*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; + struct device* dev = device_allocvol(NULL, pbdev); + 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; @@ -357,5 +361,7 @@ blk_mount_part(struct block_dev* bdev, llist_append(&bdev->parts, &pbdev->parts); + device_register(dev, pbdev->class, "%sp%d", bdev->bdev_id, index + 1); + return pbdev; } \ No newline at end of file