summaryrefslogtreecommitdiff
path: root/fs/ext2.c
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-09-16 23:46:30 +0200
committerMiguel <m.i@gmx.at>2018-09-16 23:46:30 +0200
commit06e6e427c76bdb88a7f72dd04411d95a4bda3270 (patch)
tree5c2bae3ca5292bf3db58c33ef3d7f4f3947593c3 /fs/ext2.c
parent740ae2e69995df37c44fe61f57642ee642982ca2 (diff)
starting to create sysfs
Diffstat (limited to 'fs/ext2.c')
-rw-r--r--fs/ext2.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/fs/ext2.c b/fs/ext2.c
index 659edda..b518bd9 100644
--- a/fs/ext2.c
+++ b/fs/ext2.c
@@ -1,6 +1,7 @@
#include <stdbool.h>
#include <stdint.h>
+#include "mount.h"
#include "kernel.h"
#include "ext2.h"
@@ -303,3 +304,27 @@ int ext2_read_dir(uint32_t ext2_start_addr, int inode_nr, fs_dirent *dirs, uint3
}
return 0;
}
+
+/* mount interface */
+
+fd ext2_mount_file_open(mount *m,char *path)
+{
+ return fd_from_path(path);
+}
+
+int ext2_mount_read_dir(mount *m,char *path, fs_dirent *dirs, uint32_t *pos)
+{
+ uint32_t inode= ext2_filename_to_inode(VMEM_EXT2_RAMIMAGE,path);
+ return ext2_read_dir(m->data, inode, dirs, pos);
+}
+
+void ext2_mount(char *path)
+{
+ mount m;
+ m.type=MOUNT_TYPE_EXT2;
+ memcpy(m.path,path,strlen(path)+1);
+ m.mount_file_open=ext2_mount_file_open;
+ m.mount_read_dir=ext2_mount_read_dir;
+ m.data=VMEM_EXT2_RAMIMAGE;
+ mount_add(m);
+}