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)
{
}
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;
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