feat: (iso9660) implement file read (for both interleaved and non-interleaved mode)
[lunaix-os.git] / lunaix-os / kernel / fs / fs_export.c
1 #include <lunaix/foptions.h>
2 #include <lunaix/fs.h>
3 #include <lunaix/fs/twifs.h>
4
5 extern struct llist_header all_mnts;
6
7 void
8 __mount_read(struct twimap* map)
9 {
10     char path[512];
11     struct v_mount* mnt = twimap_index(map, struct v_mount*);
12     size_t len = vfs_get_path(mnt->mnt_point, path, 511, 0);
13     path[len] = '\0';
14     twimap_printf(map, "%s at %s", mnt->super_block->fs->fs_name.value, path);
15     if ((mnt->flags & MNT_RO)) {
16         twimap_printf(map, ", ro");
17     } else {
18         twimap_printf(map, ", rw");
19     }
20     twimap_printf(map, "\n");
21 }
22
23 int
24 __mount_next(struct twimap* map)
25 {
26     struct v_mount* mnt = twimap_index(map, struct v_mount*);
27     if (mnt->list.next == &all_mnts) {
28         return 0;
29     }
30     map->index = container_of(mnt->list.next, struct v_mount, list);
31     return 1;
32 }
33
34 void
35 __mount_reset(struct twimap* map)
36 {
37     map->index = container_of(all_mnts.next, struct v_mount, list);
38 }
39
40 void
41 vfs_export_attributes()
42 {
43     struct twimap* map = twifs_mapping(NULL, NULL, "mounts");
44     map->read = __mount_read;
45     map->go_next = __mount_next;
46     map->reset = __mount_reset;
47 }