diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/fs.c | 22 | ||||
| -rw-r--r-- | fs/fs.h | 4 |
2 files changed, 22 insertions, 4 deletions
@@ -1,7 +1,9 @@ // abstraction layer for filesystems +#define FOOLOS_MODULE_NAME "mount" #include "fs.h" #include "ext2.h" +#include "lib/logger/log.h" static uint32_t root_ext2_ramimage=0; @@ -18,9 +20,25 @@ int fs_readdir(const char *name,fs_dirent *dirs,int max) return ext2_read_dir(root_ext2_ramimage, inode_nr,dirs,max); // TODO: hardcoded, fix this } -void fs_mount(uint32_t ext2_ramimage) +void fs_mount(multiboot_information *info) { - root_ext2_ramimage=ext2_ramimage; + // deinit modules memory + if(info->flags&&1<<3) + { + multiboot_mod *mod=info->mods_addr; + for(int i=0;i<info->mods_count;i++) + { + log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"mounting mod from 0x%08X-0x%08X : %s", + mod->mod_start,mod->mod_end, mod->string); + + + //pmmngr_deinit_region(mod->mod_start,((uint32_t)mod->mod_end-(uint32_t)mod->mod_start)+1); + root_ext2_ramimage=mod->mod_start; + + + mod++; + } + } } uint32_t fs_get_root_ext2_ramimage() @@ -2,6 +2,7 @@ #define FOOLOS_FS #include <stdint.h> +#include "kernel/multiboot.h" enum FS_FILE_TYPE{ @@ -19,7 +20,6 @@ typedef struct fs_dirent_struct }fs_dirent; int fs_readdir(const char *name,fs_dirent *dirs,int max); -void fs_mount(uint32_t ext2_ramimage); // all you can mount so far is just one single - // ext2 ramimage as root +void fs_mount(multiboot_information *info); // mounts ext2 ramimage from module as root #endif |
