tasking: fix virtual mapping count in exec_from_file

This commit is contained in:
2025-06-07 15:07:26 +03:00
parent 2408b67ccc
commit 9f721a72b7
+6 -4
View File
@@ -98,7 +98,7 @@ void exec_from_file(const char* filename)
int pages_needed = (elf_phdr->p_memsz / 0x1000) + 1; int pages_needed = (elf_phdr->p_memsz / 0x1000) + 1;
printf("pages needed: %X\n", pages_needed); printf("pages needed: %X\n", pages_needed);
for(int j = 0; j <= pages_needed; j++) for(int j = 0; j < pages_needed; j++)
{ {
uint32_t vaddr = (elf_phdr->p_vaddr & ~0xFFF) + j * 0x1000; uint32_t vaddr = (elf_phdr->p_vaddr & ~0xFFF) + j * 0x1000;
void* phys_addr = alloc_page(); void* phys_addr = alloc_page();
@@ -114,8 +114,8 @@ void exec_from_file(const char* filename)
uint32_t file_start = elf_phdr->p_vaddr + elf_phdr->p_filesz; uint32_t file_start = (elf_phdr->p_vaddr & ~0xFFF) + elf_phdr->p_filesz;
uint32_t file_end = elf_phdr->p_vaddr + pages_needed * 0x1000; uint32_t file_end = (elf_phdr->p_vaddr & ~0xFFF) + pages_needed * 0x1000;
memset((void*)file_start, 0, file_end - file_start); memset((void*)file_start, 0, file_end - file_start);
printf("p_filesz: 0x%X (%X)\n", elf_phdr->p_filesz, elf_phdr->p_filesz); printf("p_filesz: 0x%X (%X)\n", elf_phdr->p_filesz, elf_phdr->p_filesz);
@@ -124,7 +124,9 @@ void exec_from_file(const char* filename)
printf("================================\n\n\n\n"); printf("================================\n\n\n\n");
} }
Process* p_task1 = task_create(elf_ehdr->e_entry, NULL, 0, 3, proc_pd);
set_page_dir(curr_pd_phys); set_page_dir(curr_pd_phys);
Process* p_task1 = task_create(elf_ehdr->e_entry, NULL, 0, 3, proc_pd);
asm volatile("sti"); asm volatile("sti");
} }