- minor optimization in main.c and tasks.c
This commit is contained in:
parent
d03afaf36f
commit
c3d912bee1
2 changed files with 23 additions and 13 deletions
|
@ -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; j<depth; j++)
|
||||
|
@ -60,8 +64,12 @@ static void list_fs(vfs_node_t* node, uint32_t depth)
|
|||
if (new_node) {
|
||||
if (new_node->type == 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; j<depth+1; j++)
|
||||
kputs(" ");
|
||||
kprintf("content: %s\n", buff);
|
||||
|
@ -70,7 +78,8 @@ static void list_fs(vfs_node_t* node, uint32_t depth)
|
|||
}
|
||||
|
||||
i++;
|
||||
}*/
|
||||
}
|
||||
kfree(file, sizeof(fildes_t));
|
||||
}
|
||||
|
||||
static void list_root(void) {
|
||||
|
|
|
@ -401,9 +401,10 @@ static int load_task(load_args_t* largs)
|
|||
elf_header_t header;
|
||||
elf_program_header_t prog_header;
|
||||
//elf_section_header_t sec_header;
|
||||
fildes_t file;
|
||||
file.offset = 0;
|
||||
file.flags = 0;
|
||||
///!!! kfree is missing!
|
||||
fildes_t *file = kmalloc(sizeof(fildes_t));
|
||||
file->offset = 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; i<header.ph_entry_count; i++) {
|
||||
file.offset = header.ph_offset+i*header.ph_entry_size;
|
||||
if (read_fs(&file, (uint8_t*)&prog_header, sizeof(elf_program_header_t)) == 0) {
|
||||
file->offset = 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)
|
||||
|
|
Loading…
Add table
Reference in a new issue