refining vfs

This commit is contained in:
2026-07-10 07:46:46 -05:00
parent 4d98d73f5e
commit 032a35206a
13 changed files with 304 additions and 277 deletions

View File

@@ -5,7 +5,7 @@
#include <lib/memory.h>
uint32_t load_elf_program(const char* prgm) {
int fd = open(prgm, 0);
int fd = vfs_open(prgm, 0);
if (fd == -1) {
return -1;
}
@@ -13,7 +13,7 @@ uint32_t load_elf_program(const char* prgm) {
elf_header_t* e_hdr = kalloc(sizeof(elf_header_t));
memset((void*)e_hdr, 0, sizeof(elf_header_t));
uint32_t bytes_rd = read(fd, e_hdr, sizeof(elf_header_t));
uint32_t bytes_rd = vfs_read(fd, e_hdr, sizeof(elf_header_t));
if (bytes_rd <= 0) {
return -1;
}
@@ -23,9 +23,9 @@ uint32_t load_elf_program(const char* prgm) {
uint32_t heap_start = 0;
for (uint32_t i = 0; i < e_hdr->e_phnum; i++) {
fseek(fd, ph_table_ptr);
vfs_seek(fd, ph_table_ptr);
memset((void*)ph, 0, sizeof(elf_program_header_t));
read(fd, ph, sizeof(elf_program_header_t));
vfs_read(fd, ph, sizeof(elf_program_header_t));
if (ph->p_type == PT_LOAD) {
uint32_t vstart = ph->p_vaddr;
@@ -44,8 +44,8 @@ uint32_t load_elf_program(const char* prgm) {
}
uint32_t data_ptr = ph->p_offset;
fseek(fd, data_ptr);
read(fd, (void*)vstart, ph->p_filesz);
vfs_seek(fd, data_ptr);
vfs_read(fd, (void*)vstart, ph->p_filesz);
// 0 out bss
if (ph->p_memsz > ph->p_filesz) {