diff options
Diffstat (limited to 'fs/ext2.c')
| -rw-r--r-- | fs/ext2.c | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -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); +} |
