From 9b152b773d40d40abf41a46be2ddae8905170fdf Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Fri, 15 May 2015 02:34:33 +0200 Subject: using ramimage position and correct kernel pages count --- fs/fs.c | 22 ++++++++++++++++++++-- fs/fs.h | 4 ++-- 2 files changed, 22 insertions(+), 4 deletions(-) (limited to 'fs') diff --git a/fs/fs.c b/fs/fs.c index fd43c52..19027d6 100644 --- a/fs/fs.c +++ b/fs/fs.c @@ -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;imods_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() diff --git a/fs/fs.h b/fs/fs.h index db6e608..b90b4f1 100644 --- a/fs/fs.h +++ b/fs/fs.h @@ -2,6 +2,7 @@ #define FOOLOS_FS #include +#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 -- cgit v1.2.3