summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-rw-r--r--fs/fs.c22
-rw-r--r--fs/fs.h4
2 files changed, 22 insertions, 4 deletions
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;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()
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 <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