diff --git a/kernel/main.c b/kernel/main.c index 135fbd7f..51c98e6e 100755 --- a/kernel/main.c +++ b/kernel/main.c @@ -47,8 +47,12 @@ extern char __BUILD_TIME; static void list_fs(vfs_node_t* node, uint32_t depth) { -/* int j, i = 0; + int j, i = 0; dirent_t* dirent = NULL; + fildes_t* file = kmalloc(sizeof(fildes_t)); + file->offset = 0; + file->flags = 0; + while ((dirent = readdir_fs(node, i)) != 0) { for(j=0; jtype == FS_FILE) { char buff[16] = {[0 ... 15] = 0x00}; + + file->node = new_node; + file->offset = 0; + file->flags = 0; - read_fs(new_node, (uint8_t*)buff, 8, 0); + read_fs(file, (uint8_t*)buff, 8); for(j=0; joffset = 0; + file->flags = 0; //TODO: init the hole fildes_t struct! vfs_node_t* node; @@ -412,11 +413,11 @@ static int load_task(load_args_t* largs) if (!largs) return -EINVAL; - file.node = largs->node; - if (!file.node) + file->node = largs->node; + if (!file->node) return -EINVAL; - read_fs(&file, (uint8_t*)&header, sizeof(elf_header_t)); + read_fs(file, (uint8_t*)&header, sizeof(elf_header_t)); if (BUILTIN_EXPECT(header.ident.magic != ELF_MAGIC, 0)) goto invalid; @@ -437,8 +438,8 @@ static int load_task(load_args_t* largs) // interpret program header table for (i=0; ioffset = header.ph_offset+i*header.ph_entry_size; + if (read_fs(file, (uint8_t*)&prog_header, sizeof(elf_program_header_t)) == 0) { kprintf("Could not read programm header!\n"); continue; } @@ -471,8 +472,8 @@ static int load_task(load_args_t* largs) curr_task->start_heap = curr_task->end_heap = prog_header.virt_addr+prog_header.mem_size; // load program - file.offset = prog_header.offset; - read_fs(&file, (uint8_t*)prog_header.virt_addr, prog_header.file_size); + file->offset = prog_header.offset; + read_fs(file, (uint8_t*)prog_header.virt_addr, prog_header.file_size); flags = VMA_CACHEABLE; if (prog_header.flags & PF_R)