1 #include <lunaix/block.h>
2 #include <lunaix/fs/twifs.h>
4 static struct twifs_node* blk_root;
9 blk_root = twifs_dir_node(NULL, "block");
13 __twimap_read_lblk_size(struct twimap* map)
15 struct block_dev* bdev = twimap_data(map, struct block_dev*);
16 size_t lblksz = bdev->blk_size;
17 twimap_printf(map, "%u", lblksz);
21 __twimap_read_name(struct twimap* map)
23 struct block_dev* bdev = twimap_data(map, struct block_dev*);
24 twimap_printf(map, "%s", bdev->name);
28 __twimap_read_lba_begin(struct twimap* map)
30 struct block_dev* bdev = twimap_data(map, struct block_dev*);
31 twimap_printf(map, "%d", bdev->start_lba);
35 __twimap_read_lba_end(struct twimap* map)
37 struct block_dev* bdev = twimap_data(map, struct block_dev*);
38 twimap_printf(map, "%d", bdev->end_lba);
42 __twimap_read_size(struct twimap* map)
44 struct block_dev* bdev = twimap_data(map, struct block_dev*);
46 map, "%u", (u32_t)(bdev->end_lba - bdev->start_lba) * bdev->blk_size);
50 __map_internal(struct block_dev* bdev, void* fsnode)
52 struct twifs_node* dev_root;
54 dev_root = (struct twifs_node*)fsnode;
56 twimap_export_value(dev_root, size, FSACL_aR, bdev);
57 twimap_export_value(dev_root, lblk_size, FSACL_aR, bdev);
58 twimap_export_value(dev_root, name, FSACL_aR, bdev);
59 twimap_export_value(dev_root, lba_begin, FSACL_aR, bdev);
60 twimap_export_value(dev_root, lba_end, FSACL_aR, bdev);
64 blk_set_blkmapping(struct block_dev* bdev, void* fsnode)
66 struct twifs_node* dev_root = (struct twifs_node*)fsnode;
68 __map_internal(bdev, dev_root);
70 struct block_dev *pos, *n;
71 llist_for_each(pos, n, &bdev->parts, parts)
73 struct twifs_node* part_node = twifs_dir_node(dev_root, pos->bdev_id);
74 __map_internal(pos, part_node);