X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/3b6a05fc894d0c1a3d431045ee5a53955ba093a0..841bc2c7be78b30f5d0e13bb344db78da0ed665d:/lunaix-os/kernel/block/blk_mapping.c diff --git a/lunaix-os/kernel/block/blk_mapping.c b/lunaix-os/kernel/block/blk_mapping.c index 46e8f45..7dae2b8 100644 --- a/lunaix-os/kernel/block/blk_mapping.c +++ b/lunaix-os/kernel/block/blk_mapping.c @@ -9,14 +9,6 @@ blk_mapping_init() blk_root = twifs_dir_node(NULL, "block"); } -void -__blk_rd_size(struct twimap* map) -{ - struct block_dev* bdev = twimap_data(map, struct block_dev*); - size_t secsize = bdev->blk_size; - twimap_printf(map, "%u", bdev->end_lba * secsize); -} - void __blk_rd_lblksz(struct twimap* map) { @@ -33,7 +25,29 @@ __blk_rd_name(struct twimap* map) } void -blk_set_blkmapping(struct block_dev* bdev, void* fsnode) +__blk_rd_start_lba(struct twimap* map) +{ + struct block_dev* bdev = twimap_data(map, struct block_dev*); + twimap_printf(map, "%d", bdev->start_lba); +} + +void +__blk_rd_end_lba(struct twimap* map) +{ + struct block_dev* bdev = twimap_data(map, struct block_dev*); + twimap_printf(map, "%d", bdev->end_lba); +} + +void +__blk_rd_size(struct twimap* map) +{ + struct block_dev* bdev = twimap_data(map, struct block_dev*); + twimap_printf( + map, "%u", (u32_t)(bdev->end_lba - bdev->start_lba) * bdev->blk_size); +} + +void +__map_internal(struct block_dev* bdev, void* fsnode) { struct twifs_node* dev_root = (struct twifs_node*)fsnode; @@ -45,4 +59,25 @@ blk_set_blkmapping(struct block_dev* bdev, void* fsnode) map = twifs_mapping(dev_root, bdev, "name"); map->read = __blk_rd_name; + + map = twifs_mapping(dev_root, bdev, "begin"); + map->read = __blk_rd_start_lba; + + map = twifs_mapping(dev_root, bdev, "end"); + map->read = __blk_rd_end_lba; +} + +void +blk_set_blkmapping(struct block_dev* bdev, void* fsnode) +{ + struct twifs_node* dev_root = (struct twifs_node*)fsnode; + + __map_internal(bdev, dev_root); + + struct block_dev *pos, *n; + llist_for_each(pos, n, &bdev->parts, parts) + { + struct twifs_node* part_node = twifs_dir_node(dev_root, pos->bdev_id); + __map_internal(pos, part_node); + } } \ No newline at end of file