@@ -30,6 +30,10 @@ static int modfs_mount(const char *handle, vfs_node_t node) {
3030 }
3131 node -> fsid = modfs_id ;
3232 modfs_root = node ;
33+ for (int i = 0 ; i < module_count ; i ++ ) {
34+ vfs_child_append (modfs_root , module_ls [i ].module_name , NULL );
35+ rbtree_sp_insert (mod_rbtree , module_ls [i ].module_name , (void * )& module_ls [i ]);
36+ }
3337 return VFS_STATUS_SUCCESS ;
3438}
3539
@@ -56,7 +60,7 @@ static size_t modfs_read(void *file, void *addr, size_t offset, size_t size) {
5660 cp_module_t * mod = (cp_module_t * )file ;
5761 if (offset > mod -> size ) { return VFS_STATUS_FAILED ; }
5862 void * buffer = mod -> data + offset ;
59- memcpy (addr , buffer , (mod -> size - offset ) > size ? size : mod -> size - offset );
63+ memcpy (addr , buffer , (size + offset ) > mod -> size ? size : mod -> size - offset );
6064 return size ;
6165}
6266
@@ -103,20 +107,5 @@ static struct vfs_callback modfs_callbacks = {
103107};
104108
105109void modfs_setup () {
106- modfs_id = vfs_regist ("modfs" , & modfs_callbacks );
107- vfs_mkdir ("/mod" );
108- vfs_node_t mod = vfs_open ("/mod" );
109- if (mod == NULL ) {
110- kerror ("'mod' handle is null." );
111- return ;
112- }
113- if (vfs_mount ((const char * )MODFS_REGISTER_ID , mod ) == VFS_STATUS_FAILED ) {
114- kerror ("Cannot mount module file system." );
115- return ;
116- }
117-
118- for (int i = 0 ; i < module_count ; i ++ ) {
119- vfs_child_append (modfs_root , module_ls [i ].module_name , NULL );
120- rbtree_sp_insert (mod_rbtree , module_ls [i ].module_name , (void * )& module_ls [i ]);
121- }
110+ modfs_id = vfs_regist ("modfs" , & modfs_callbacks , MODFS_REGISTER_ID );
122111}
0 commit comments