X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/1fe5f5eb5378a47bf0f3451762743c162e40faad..0f73e6cc9945f9b4a074bb62b9708d1751fa3723:/lunaix-os/kernel/block/block.c diff --git a/lunaix-os/kernel/block/block.c b/lunaix-os/kernel/block/block.c index c4e29e1..c78cd26 100644 --- a/lunaix-os/kernel/block/block.c +++ b/lunaix-os/kernel/block/block.c @@ -318,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; } @@ -341,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; @@ -359,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