- minor optimization in main.c and tasks.c

This commit is contained in:
Marian Ohligs 2011-08-02 13:01:28 +02:00
parent d03afaf36f
commit c3d912bee1
2 changed files with 23 additions and 13 deletions

View file

@ -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) {

View file

@ -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)