+}
+
+struct filesystem*
+fsm_new_fs(char* name, size_t name_len)
+{
+ struct filesystem* fs = vzalloc(sizeof(*fs));
+ if (name_len == (size_t)-1) {
+ name_len = strlen(name);
+ }
+ fs->fs_name = HHSTR(name, name_len, 0);
+ return fs;
+}
+
+void
+fsm_itbegin(struct fs_iter* iterator)
+{
+ iterator->fs = list_entry(&fs_flatlist, struct filesystem, fs_flat);
+}
+
+bool
+fsm_itnext(struct fs_iter* iterator)
+{
+ iterator->fs = list_next(iterator->fs, struct filesystem, fs_flat);
+ return &iterator->fs->fs_flat != &fs_flatlist;
+}
+
+static void
+__twimap_read_fstab(struct twimap *mapping)
+{
+ struct filesystem *pos, *n;
+ llist_for_each(pos, n, &fs_flatlist, fs_flat)
+ {
+ twimap_printf(mapping, "%s %d\n", pos->fs_name.value, pos->types);
+ }
+}
+
+static void
+fstab_twifs_plugin()
+{
+ twimap_export_value(NULL, fstab, FSACL_ugR, NULL);
+}
+EXPORT_TWIFS_PLUGIN(fstab, fstab_twifs_plugin);
\ No newline at end of file